@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(enabled = false) public void httpToHttpsRedirect() 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", getTargetUrl2()).execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); assertEquals(response.getHeader("X-httpToHttps"), "PASS"); } }
@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()); } }
config.setFollowRedirect(poolConfiguration.isFollowRedirect()); if (poolConfiguration.isFollowRedirect()) { config.setMaxRedirects(poolConfiguration.getMaxRedirects());
.setConnectTimeout(connectTimeout).setReadTimeout(readTimeout) .setPooledConnectionIdleTimeout(pooledConnectionIdleTimeout).setRequestTimeout(requestTimeout) .setFollowRedirect(followRedirect).setMaxRedirects(maxRedirects).setMaxRequestRetry(maxRequestRetry) .setConnectionTtl(connectionTtl).build(); asyncHttpClient = new DefaultAsyncHttpClient(config);
.setConnectTimeout(connectTimeout).setReadTimeout(readTimeout) .setPooledConnectionIdleTimeout(pooledConnectionIdleTimeout).setRequestTimeout(requestTimeout) .setFollowRedirect(followRedirect).setMaxRedirects(maxRedirects).setMaxRequestRetry(maxRequestRetry) .setConnectionTtl(connectionTtl).build(); asyncHttpClient = new DefaultAsyncHttpClient(config);
@Test(expectedExceptions = MaxRedirectException.class) public void reachingMaxRedirectThrowsMaxRedirectException() throws Throwable { withClient(config().setMaxRedirects(1).setFollowRedirect(true)).run(client -> withServer(server).run(server -> { try { // max redirect is 1, so second redirect will fail server.enqueueRedirect(301, getTargetUrl()); server.enqueueRedirect(301, getTargetUrl()); client.prepareGet(getTargetUrl()).execute(new AsyncCompletionHandlerAdapter() { @Override public Response onCompleted(Response response) { fail("Should not be here"); return response; } @Override public void onThrowable(Throwable t) { } }).get(TIMEOUT, SECONDS); } catch (ExecutionException e) { throw e.getCause(); } })); }
@Test(enabled = false) public void httpToHttpsProperConfig() 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", getTargetUrl2() + "/test2").execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); assertEquals(response.getHeader("X-httpToHttps"), "PASS"); // Test if the internal channel is downgraded to clean http. response = c.prepareGet(getTargetUrl()).setHeader("X-redirect", getTargetUrl2() + "/foo2").execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); assertEquals(response.getHeader("X-httpToHttps"), "PASS"); } }
public Builder setMaxRedirects(int maxRedirects) { configBuilder.setMaxRedirects(maxRedirects); return this; }
protected ClientTestBody withClient() { return withClient(config().setMaxRedirects(0)); }