@Override
    public Credentials get() throws BackgroundException {
        if(log.isDebugEnabled()) {
            log.debug(String.format("Configure credentials from %s", url));
        }
        final Host address = new HostParser(ProtocolFactory.get()).get(url);
        final HttpConnectionPoolBuilder builder = new HttpConnectionPoolBuilder(address,
                new ThreadLocalHostnameDelegatingTrustManager(trust, address.getHostname()), key, ProxyFactory.get());
        final HttpClientBuilder configuration = builder.build(ProxyFactory.get(),
                new DisabledTranscriptListener(), new DisabledLoginCallback());
        try (CloseableHttpClient client = configuration.build()) {
            final HttpRequestBase resource = new HttpGet(new HostUrlProvider().withUsername(false).withPath(true).get(address));
            return client.execute(resource, new ResponseHandler<Credentials>() {
                @Override
                public Credentials handleResponse(final HttpResponse response) throws IOException {
                    switch(response.getStatusLine().getStatusCode()) {
                        case HttpStatus.SC_OK:
                            final HttpEntity entity = response.getEntity();
                            if(entity == null) {
                                log.warn(String.format("Missing response entity in %s", response));
                                throw new ClientProtocolException("Empty response");
                            }
                            else {
                                return parse(entity.getContent());
                            }
                    }
                    throw new HttpResponseException(response.getStatusLine().getStatusCode(), response.getStatusLine().getReasonPhrase());
                }
            });
        }
        catch(IOException e) {
            log.warn(String.format("Failure %s to retrieve session credentials", e));
            throw new LoginFailureException(e.getMessage(), e);
        }
    }
@Test(expected = ConnectionTimeoutException.class)
    @Ignore
    public void testGet() throws Exception {
        new AWSSessionCredentialsRetriever(new DisabledX509TrustManager(), new DefaultX509KeyManager(),
                "http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access")
                .get();
    }