@Test(groups = { "standalone", "default_provider" }) public void redirected302InvalidTest() throws Throwable { isSet.getAndSet(false); AsyncHttpClientConfig cg = new AsyncHttpClientConfig.Builder().setFollowRedirect(true).build(); // If the test hit a proxy, no ConnectException will be thrown and instead of 404 will be returned. try (AsyncHttpClient client = getAsyncHttpClient(cg)) { Response response = client.prepareGet(getTargetUrl()).setHeader("X-redirect", String.format("http://127.0.0.1:%d/", port2)).execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 404); } catch (ExecutionException ex) { assertEquals(ex.getCause().getClass(), ConnectException.class); } }
@Test(groups = { "online", "default_provider" }, enabled = false) public void invalidStreamTest2() throws Throwable { AsyncHttpClientConfig config = new AsyncHttpClientConfig.Builder().setRequestTimeout(10000).setFollowRedirect(true).setAllowPoolingConnections(false).setMaxRedirects(6).build(); try (AsyncHttpClient client = getAsyncHttpClient(config)) { Response response = client.prepareGet("http://bit.ly/aUjTtG").execute().get(); if (response != null) { System.out.println(response); } } catch (Throwable t) { t.printStackTrace(); assertNotNull(t.getCause()); assertEquals(t.getCause().getMessage(), "invalid version format: ICY"); } }
@Test(groups = { "standalone", "default_provider" }) public void relativePathRedirectTest() throws Throwable { isSet.getAndSet(false); AsyncHttpClientConfig cg = new AsyncHttpClientConfig.Builder().setFollowRedirect(true).build(); try (AsyncHttpClient client = getAsyncHttpClient(cg)) { String redirectTarget = "bar/test1"; String destinationUrl = new URI(getTargetUrl()).resolve(redirectTarget).toString(); Response response = client.prepareGet(getTargetUrl()).setHeader("X-redirect", redirectTarget).execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); assertEquals(response.getUri().toString(), destinationUrl); log.debug("{} was redirected to {}", redirectTarget, destinationUrl); } } }
@Test(groups = { "online", "default_provider" }) public void asyncStatusHEADContentLenghtTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(new AsyncHttpClientConfig.Builder().setFollowRedirect(true).build())) { final CountDownLatch l = new CountDownLatch(1); Request request = new RequestBuilder("HEAD").setUrl("http://www.google.com/").build(); client.executeRequest(request, new AsyncCompletionHandlerAdapter() { @Override public Response onCompleted(Response response) throws Exception { Assert.assertEquals(response.getStatusCode(), 200); l.countDown(); return response; } }).get(); if (!l.await(5, TimeUnit.SECONDS)) { Assert.fail("Timeout out"); } } }
@Test public void testNoTransferEncoding() throws Exception { String url = "http://localhost:" + port + "/test"; AsyncHttpClientConfig config = new AsyncHttpClientConfig.Builder() .setFollowRedirect(false) .setConnectTimeout(15000) .setRequestTimeout(15000) .setAllowPoolingConnections(false) .setDisableUrlEncodingForBoundedRequests(true) .setIOThreadMultiplier(2) // 2 is default .build(); try (AsyncHttpClient client = new AsyncHttpClient(new GrizzlyAsyncHttpProvider(config), config)) { Future<com.ning.http.client.Response> f = client.prepareGet(url).execute(); com.ning.http.client.Response r = f.get(10, TimeUnit.SECONDS); Assert.assertEquals(TEST_MESSAGE, r.getResponseBody()); } } }
@Test(invocationCount = 4, groups = { "online", "default_provider" }) public void multipleSslRequestsWithDelayAndKeepAlive() throws Throwable { AsyncHttpClientConfig.Builder configBuilder = new AsyncHttpClientConfig.Builder().setFollowRedirect(true).setSSLContext(getSSLContext()).setAllowPoolingConnections(true).setConnectTimeout(10000) .setPooledConnectionIdleTimeout(60000).setRequestTimeout(10000).setMaxConnectionsPerHost(-1).setMaxConnections(-1); try (AsyncHttpClient client = getAsyncHttpClient(configBuilder.build())) { final BoundRequestBuilder builder = client.prepareGet(VERISIGN_HTTPS_URL); final Response response1 = builder.execute().get(); Thread.sleep(4000); final Response response2 = builder.execute().get(); if (response2 != null) { System.out.println("Success (2nd response was not null)."); } else { System.out.println("Failed (2nd response was null)."); } Assert.assertNotNull(response1); Assert.assertNotNull(response2); } }
/** * Create new http client using internal * http client from async-http-client library. * An instance of {com.ning.http.client.NingAsyncHttpClient} will be automatically * created. * * @param server Embedded server. * @return Http client. * @throws NullPointerException If {@code server} is {@code null}. */ public static NingAsyncHttpClient defaultAsyncHttpClient(EmbeddedServer<?> server) { HttpClientConfiguration configuration = HttpClientConfiguration.defaultConfiguration(); AsyncHttpClientConfig config = new AsyncHttpClientConfig.Builder() .setFollowRedirect(configuration.isFollowRedirect()) .build(); return new NingAsyncHttpClient(configuration, server, new com.ning.http.client.AsyncHttpClient(config)); }
@Test(groups = { "standalone", "default_provider" }) public void relativeLocationUrl() throws Throwable { isSet.getAndSet(false); AsyncHttpClientConfig cg = new AsyncHttpClientConfig.Builder()// .setMaxRedirects(5)// .setFollowRedirect(true)// .setAcceptAnyCertificate(true)// .build(); try (AsyncHttpClient client = getAsyncHttpClient(cg)) { Response response = client.prepareGet(getTargetUrl()).setHeader("X-redirect", "/foo/test").execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); assertEquals(response.getUri().toString(), getTargetUrl()); } } }
@Test(groups = { "standalone", "default_provider" }) public void redirectAndBasicAuthTest() throws Exception, ExecutionException, TimeoutException, InterruptedException { try (AsyncHttpClient client = getAsyncHttpClient(new AsyncHttpClientConfig.Builder().setFollowRedirect(true).setMaxRedirects(10).build())) { setUpSecondServer(); AsyncHttpClient.BoundRequestBuilder r = client.prepareGet(getTargetUrl2()) .setRealm((new Realm.RealmBuilder()).setPrincipal(user).setPassword(admin).build()); Future<Response> f = r.execute(); Response resp = f.get(3, TimeUnit.SECONDS); assertNotNull(resp, "Response shouldn't be null"); assertEquals(resp.getStatusCode(), HttpServletResponse.SC_OK, "Status code should be 200-OK"); assertNotNull(resp.getHeader("X-Auth"), "X-Auth shouldn't be null"); } finally { stopSecondServer(); } }
@Test(groups = { "standalone", "default_provider" }) public void absolutePathRedirectTest() throws Throwable { isSet.getAndSet(false); AsyncHttpClientConfig cg = new AsyncHttpClientConfig.Builder().setFollowRedirect(true).build(); try (AsyncHttpClient client = getAsyncHttpClient(cg)) { String redirectTarget = "/bar/test"; String destinationUrl = new URI(getTargetUrl()).resolve(redirectTarget).toString(); Response response = client.prepareGet(getTargetUrl()).setHeader("X-redirect", redirectTarget).execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); assertEquals(response.getUri().toString(), destinationUrl); log.debug("{} was redirected to {}", redirectTarget, destinationUrl); } }
/** * Create new http client using custom configuration. * * @param configuration Client configuration. * @param server Embedded server. * @return Http client. * @throws NullPointerException If {@code server} or {@code configuration} is {@code null}. */ public static NingAsyncHttpClient newAsyncHttpClient(HttpClientConfiguration configuration, EmbeddedServer<?> server) { AsyncHttpClientConfig config = new AsyncHttpClientConfig.Builder() .setFollowRedirect(configuration.isFollowRedirect()) .build(); AsyncHttpClient client = new AsyncHttpClient(config); return new NingAsyncHttpClient(configuration, server, client); }
@Test(groups = { "standalone", "default_provider" }) public void httpToHttpsRedirect() throws Throwable { isSet.getAndSet(false); AsyncHttpClientConfig cg = new AsyncHttpClientConfig.Builder()// .setMaxRedirects(5)// .setFollowRedirect(true)// .setAcceptAnyCertificate(true)// .build(); try (AsyncHttpClient client = getAsyncHttpClient(cg)) { Response response = client.prepareGet(getTargetUrl()).setHeader("X-redirect", getTargetUrl2()).execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); assertEquals(response.getHeader("X-httpToHttps"), "PASS"); } }
@Test(groups = { "online", "default_provider" }) public void redirected302Test() throws Throwable { isSet.getAndSet(false); AsyncHttpClientConfig cg = new AsyncHttpClientConfig.Builder().setFollowRedirect(true).build(); try (AsyncHttpClient client = getAsyncHttpClient(cg)) { // once Response response = client.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); } }
protected AsyncHttpClientConfig.Builder httpClientBuilder() { return new AsyncHttpClientConfig.Builder()// .setAllowPoolingConnections(true)// .setMaxConnectionsPerHost(1)// .setMaxConnections(1)// .setConnectTimeout(1000)// .setRequestTimeout(1000).setFollowRedirect(true); }
@Test(groups = { "online", "default_provider" }) public void notRedirected302Test() throws Throwable { isSet.getAndSet(false); AsyncHttpClientConfig cg = new AsyncHttpClientConfig.Builder().setFollowRedirect(true).build(); try (AsyncHttpClient client = getAsyncHttpClient(cg)) { // once Response response = client.prepareGet(getTargetUrl()).setFollowRedirects(false).setHeader("X-redirect", "http://www.microsoft.com/").execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 302); } }
@Test(groups = { "online", "default_provider" }) public void stripQueryStringTest() throws Throwable { AsyncHttpClientConfig cg = new AsyncHttpClientConfig.Builder().setFollowRedirect(true).build(); try (AsyncHttpClient client = getAsyncHttpClient(cg)) { Response response = client.prepareGet("http://www.freakonomics.com/?p=55846").execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); } }
@BeforeMethod public void setUp() throws Exception { clientConfig = new AsyncHttpClientConfig.Builder().setFollowRedirect(true).setRequestTimeout(Integer.valueOf(GLOBAL_REQUEST_TIMEOUT)).build(); }
public final static AsyncHttpClient createDefaultAsyncHttpClient(int requestTimeoutInSeconds, AsyncHttpProviderConfig asyncHttpProviderConfig) { AsyncHttpClientConfig.Builder b = new AsyncHttpClientConfig.Builder(); b.setFollowRedirect(true).setConnectTimeout(-1) .setReadTimeout(requestTimeoutInSeconds == -1 ? requestTimeoutInSeconds : requestTimeoutInSeconds * 1000) .setUserAgent(WASYNC_USER_AGENT); AsyncHttpClientConfig config = b.setAsyncHttpClientProviderConfig(asyncHttpProviderConfig).build(); return new AsyncHttpClient(config); }
public final static AsyncHttpClient createDefaultAsyncHttpClient(int requestTimeoutInSeconds, AsyncHttpProviderConfig asyncHttpProviderConfig) { AsyncHttpClientConfig.Builder b = new AsyncHttpClientConfig.Builder(); b.setFollowRedirect(true).setConnectTimeout(-1) .setReadTimeout(requestTimeoutInSeconds == -1 ? requestTimeoutInSeconds : requestTimeoutInSeconds * 1000) .setUserAgent(WASYNC_USER_AGENT); AsyncHttpClientConfig config = b.setAsyncHttpClientProviderConfig(asyncHttpProviderConfig).build(); return new AsyncHttpClient(config); }
AsyncHttpClient buildDefaultClient() { builder.setMaxRequestRetry(maxRequestRetry)//尝试重试次数 .setAllowPoolingConnections(allowPollingConnections)//开启连接池模式 .setMaxConnections(maxConnections)//最大连接数 .setConnectTimeout(connectTimeout)//连接超时时间 .setPooledConnectionIdleTimeout(readTimeout)//设置连接池超时时间 .setReadTimeout(readTimeout)//读取请求超时时间 .setFollowRedirect(followRedirect)//开启重定向追踪 .setMaxRedirects(maxRedirects)//重定向次数限制 .setUserAgent(userAgent)//设置UserAgent .setMaxConnectionsPerHost(maxConnectionsPerHost)//设置初始连接池大小 .setIOThreadMultiplier(ioThreadMultiplier)//用于IO的线程数 .setCompressionEnforced(compressionEnforced)//压缩执行 ; return new AsyncHttpClient(builder.build()); }