public ListenableFuture<Response> execute() { return client.executeRequest(build(), new AsyncCompletionHandlerBase()); } }
@Override public ListenableFuture<Response> executeRequest(RequestBuilder requestBuilder) { return executeRequest(requestBuilder.build()); }
@Override public ListenableFuture<Response> executeRequest(Request request) { return executeRequest(request, new AsyncCompletionHandlerBase()); }
@Test public void regular302StrictKeepsBody() throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().setFollowRedirect(true).setStrict302Handling(true))) { String body = "hello there"; String contentType = "text/plain; charset=UTF-8"; Response response = c.preparePost(getTargetUrl()).setHeader(CONTENT_TYPE, contentType).setBody(body).setHeader("X-REDIRECT", "302").execute().get(TIMEOUT, TimeUnit.SECONDS); assertEquals(response.getResponseBody(), body); assertEquals(receivedContentType, contentType); } }
@Test(groups = "online", enabled = false) public void notRedirected302Test() throws Exception { isSet.getAndSet(false); try (AsyncHttpClient c = asyncHttpClient(config().setFollowRedirect(true))) { Response response = c.prepareGet(getTargetUrl()).setFollowRedirect(false).setHeader("X-redirect", "http://www.microsoft.com/").execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 302); } }
protected void execute(String body) throws IOException, InterruptedException, ExecutionException { try (AsyncHttpClient client = asyncHttpClient()) { BoundRequestBuilder r = client.preparePost(getTargetUrl()).setBody(body).setCharset(UTF_8); Future<Response> f = r.execute(); Response resp = f.get(); assertEquals(resp.getStatusCode(), 200); assertEquals(body, resp.getResponseBody(UTF_8)); } } }
@Test public void redirectAndBasicAuthTest() throws Exception { try (AsyncHttpClient client = asyncHttpClient(config().setFollowRedirect(true).setMaxRedirects(10))) { Future<Response> f = client.prepareGet(getTargetUrl2()) .setRealm(basicAuthRealm(USER, ADMIN).build()) .execute(); Response resp = f.get(3, TimeUnit.SECONDS); assertEquals(resp.getStatusCode(), HttpServletResponse.SC_OK); assertNotNull(resp); assertNotNull(resp.getHeader("X-Auth")); } }
@Test public void multipleRequestsTest() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { String body = "hello there"; // once Response response = c.preparePost(getTargetUrl()).setBody(body).setHeader("Content-Type", "text/html").execute().get(TIMEOUT, TimeUnit.SECONDS); assertEquals(response.getResponseBody(), body); // twice response = c.preparePost(getTargetUrl()).setBody(body).setHeader("Content-Type", "text/html").execute().get(TIMEOUT, TimeUnit.SECONDS); assertEquals(response.getResponseBody(), body); } }
@Test public void testListenableFutureBeforeAndAfterCompletion() throws Exception { final CountDownLatch latch = new CountDownLatch(2); try (AsyncHttpClient ahc = asyncHttpClient()) { final ListenableFuture<Response> future = ahc.prepareGet(getTargetUrl()).execute(); future.addListener(latch::countDown, Runnable::run); future.get(); future.addListener(latch::countDown, Runnable::run); } latch.await(10, TimeUnit.SECONDS); } }
@Test public void testEolTerminatedResponse() throws Exception { try (AsyncHttpClient ahc = asyncHttpClient(config().setMaxRequestRetry(0))) { ahc.executeRequest(ahc.prepareGet(getTargetUrl()).setHeader(ACCEPT_ENCODING, HttpHeaderValues.GZIP_DEFLATE).setHeader(CONNECTION, HttpHeaderValues.CLOSE).build()) .get(); } }
@Test public void idleStateTest() throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().setPooledConnectionIdleTimeout(10 * 1000))) { c.prepareGet(getTargetUrl()).execute().get(); } catch (ExecutionException e) { fail("Should allow to finish processing request.", e); } }
public static void main(String[] args) throws IOException { try (AsyncHttpClient asyncHttpClient = asyncHttpClient()) { asyncHttpClient .prepareGet("http://www.example.com/") .execute() .toCompletableFuture() .thenApply(Response::getResponseBody) .thenAccept(System.out::println) .join(); } } }
private DefaultAsyncHttpClientConfig.Builder httpClientBuilder() { return config() .setKeepAlive(true) .setMaxConnectionsPerHost(1) .setMaxConnections(1) .setConnectTimeout(1000) .setRequestTimeout(1000) .setFollowRedirect(true); }
@Override public final T onCompleted() throws Exception { return onCompleted(builder.build()); }
private Realm.Builder realmBuilderBase() { return ntlmAuthRealm("Zaphod", "Beeblebrox") .setNtlmDomain("Ursa-Minor") .setNtlmHost("LightCity"); }
@Test public void regular307KeepsBody() throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().setFollowRedirect(true))) { String body = "hello there"; String contentType = "text/plain; charset=UTF-8"; Response response = c.preparePost(getTargetUrl()).setHeader(CONTENT_TYPE, contentType).setBody(body).setHeader("X-REDIRECT", "307").execute().get(TIMEOUT, TimeUnit.SECONDS); assertEquals(response.getResponseBody(), body); assertEquals(receivedContentType, contentType); } } }
@Test public void testListenableFutureAfterCompletion() throws Exception { final CountDownLatch latch = new CountDownLatch(1); try (AsyncHttpClient ahc = asyncHttpClient()) { final ListenableFuture<Response> future = ahc.prepareGet(getTargetUrl()).execute(); future.get(); future.addListener(latch::countDown, Runnable::run); } latch.await(10, TimeUnit.SECONDS); }
@Override public <T> ListenableFuture<T> executeRequest(RequestBuilder requestBuilder, AsyncHandler<T> handler) { return executeRequest(requestBuilder.build(), handler); }
@Test public void regular302LosesBody() throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().setFollowRedirect(true))) { String body = "hello there"; String contentType = "text/plain; charset=UTF-8"; Response response = c.preparePost(getTargetUrl()).setHeader(CONTENT_TYPE, contentType).setBody(body).setHeader("X-REDIRECT", "302").execute().get(TIMEOUT, TimeUnit.SECONDS); assertEquals(response.getResponseBody(), ""); assertNull(receivedContentType); } }
@Test public void regular301LosesBody() throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().setFollowRedirect(true))) { String body = "hello there"; String contentType = "text/plain; charset=UTF-8"; Response response = c.preparePost(getTargetUrl()).setHeader(CONTENT_TYPE, contentType).setBody(body).setHeader("X-REDIRECT", "301").execute().get(TIMEOUT, TimeUnit.SECONDS); assertEquals(response.getResponseBody(), ""); assertNull(receivedContentType); } }