public Uri getUri() { return response.getUri(); }
@Test(groups = "online", enabled = false) public void redirected302Test() throws Exception { isSet.getAndSet(false); try (AsyncHttpClient c = asyncHttpClient()) { Response response = c.prepareGet(getTargetUrl()).setFollowRedirect(true).setHeader("X-redirect", "https://www.microsoft.com/").execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); String anyMicrosoftPage = "https://www.microsoft.com[^:]*:443"; String baseUrl = getBaseUrl(response.getUri()); assertTrue(baseUrl.matches(anyMicrosoftPage), "response does not show redirection to " + anyMicrosoftPage); } }
@Test(enabled = false) public void absolutePathRedirectTest() throws Exception { isSet.getAndSet(false); try (AsyncHttpClient c = asyncHttpClient(config().setFollowRedirect(true))) { String redirectTarget = "/bar/test"; String destinationUrl = new URI(getTargetUrl()).resolve(redirectTarget).toString(); Response response = c.prepareGet(getTargetUrl()).setHeader("X-redirect", redirectTarget).execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); assertEquals(response.getUri().toString(), destinationUrl); logger.debug("{} was redirected to {}", redirectTarget, destinationUrl); } }
@Test(enabled = false) public void relativePathRedirectTest() throws Exception { isSet.getAndSet(false); try (AsyncHttpClient c = asyncHttpClient(config().setFollowRedirect(true))) { String redirectTarget = "bar/test1"; String destinationUrl = new URI(getTargetUrl()).resolve(redirectTarget).toString(); Response response = c.prepareGet(getTargetUrl()).setHeader("X-redirect", redirectTarget).execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); assertEquals(response.getUri().toString(), destinationUrl); logger.debug("{} was redirected to {}", redirectTarget, destinationUrl); } }
@Test(groups = "online", enabled = false) public void redirected302Test() throws Exception { isSet.getAndSet(false); try (AsyncHttpClient c = asyncHttpClient(config().setFollowRedirect(true))) { Response response = c.prepareGet(getTargetUrl()).setHeader("X-redirect", "http://www.google.com/").execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); String baseUrl = getBaseUrl(response.getUri()); assertTrue(baseUrl.startsWith("http://www.google."), "response does not show redirection to a google subdomain, got " + baseUrl); } }
@Test(enabled = false) public void relativeLocationUrl() throws Exception { isSet.getAndSet(false); try (AsyncHttpClient c = asyncHttpClient()) { Response response = c.preparePost(getTargetUrl()).setFollowRedirect(true).setHeader("X-redirect", "/foo/test").execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); assertEquals(response.getUri().toString(), getTargetUrl()); } }
@Test public void testHEAD302() throws IOException, InterruptedException, ExecutionException, TimeoutException { AsyncHttpClientConfig clientConfig = new DefaultAsyncHttpClientConfig.Builder().setFollowRedirect(true).build(); try (AsyncHttpClient client = asyncHttpClient(clientConfig)) { final CountDownLatch l = new CountDownLatch(1); Request request = head("http://localhost:" + port1 + "/Test").build(); Response response = client.executeRequest(request, new AsyncCompletionHandlerBase() { @Override public Response onCompleted(Response response) throws Exception { l.countDown(); return super.onCompleted(response); } }).get(3, TimeUnit.SECONDS); if (l.await(TIMEOUT, TimeUnit.SECONDS)) { assertEquals(response.getStatusCode(), HttpServletResponse.SC_OK); assertTrue(response.getUri().getPath().endsWith("_moved")); } else { fail("Timeout out"); } } }
@Test(enabled = false) public void relativeLocationUrl() throws Exception { redirectDone.getAndSet(false); AsyncHttpClientConfig cg = config() .setMaxRedirects(5) .setFollowRedirect(true) .setUseInsecureTrustManager(true) .build(); try (AsyncHttpClient c = asyncHttpClient(cg)) { Response response = c.prepareGet(getTargetUrl()).setHeader("X-redirect", "/foo/test").execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); assertEquals(response.getUri().toString(), getTargetUrl()); } }
@Test public void getUrlWithPathWithQuery() throws Throwable { withClient().run(client -> withServer(server).run(server -> { String targetUrl = getTargetUrl() + "?q=+%20x"; Request request = get(targetUrl).build(); assertEquals(request.getUrl(), targetUrl); server.enqueueOk(); Response response = client.executeRequest(request, new AsyncCompletionHandlerAdapter()).get(TIMEOUT, SECONDS); assertEquals(response.getUri().toUrl(), targetUrl); })); }
@Test public void getRootUrl() throws Throwable { withClient().run(client -> withServer(server).run(server -> { String url = server.getHttpUrl(); server.enqueueOk(); Response response = client.executeRequest(get(url), new AsyncCompletionHandlerAdapter()).get(TIMEOUT, SECONDS); assertEquals(response.getUri().toUrl(), url); })); }
@Test public void getUrlWithPathWithoutQuery() throws Throwable { withClient().run(client -> withServer(server).run(server -> { server.enqueueOk(); Response response = client.executeRequest(get(getTargetUrl()), new AsyncCompletionHandlerAdapter()).get(TIMEOUT, SECONDS); assertEquals(response.getUri().toUrl(), getTargetUrl()); })); }
@Test public void getUrlWithPathWithQueryParams() throws Throwable { withClient().run(client -> withServer(server).run(server -> { server.enqueueOk(); Response response = client.executeRequest(get(getTargetUrl()).addQueryParam("q", "a b"), new AsyncCompletionHandlerAdapter()).get(TIMEOUT, SECONDS); assertEquals(response.getUri().toUrl(), getTargetUrl() + "?q=a%20b"); })); }
/** * Tests that after a redirect the final url in the response reflect the redirect */ @Test public void testGetRedirectFinalUrl() throws Exception { AsyncHttpClientConfig config = config() .setKeepAlive(true) .setMaxConnectionsPerHost(1) .setMaxConnections(1) .setConnectTimeout(1000) .setRequestTimeout(1000) .setFollowRedirect(true) .build(); try (AsyncHttpClient c = asyncHttpClient(config)) { ListenableFuture<Response> response = c.executeRequest(get(servletEndpointRedirectUrl)); Response res = response.get(); assertNotNull(res.getResponseBody()); assertEquals(res.getUri().toString(), BASE_URL + "/overthere"); } }
public Uri getUri() { return response.getUri(); }
/** * Return the request {@link URI}. Note that if the request got redirected, the value of the * {@link URI} will be the last valid redirect url. * * @return the request {@link URI}. */ @Override public URI getUri() { try { return ahcResponse.getUri().toJavaNetURI(); } catch (URISyntaxException e) { throw new RuntimeException(e); } } }
if (error != null) throw new WebException(error); log.debug("Handling response for {}, with status code = {}", response.getMessage().getUri(), response.getMessage().getStatusCode()); if (response.getStatus() == HttpStatusClass.SERVER_ERROR || response.getStatus() == HttpStatusClass.CLIENT_ERROR) {