builder.setSSLContext(client.getSslContext());
public static void main(String[] args) { SecureRandom secureRandom = new SecureRandom(); SSLContext sslContext = null; try { sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, null, secureRandom); } catch (Exception e) { e.printStackTrace(); } AsyncHttpClientConfig config = new AsyncHttpClientConfig.Builder() .setConnectTimeout(5000) .setSSLContext(sslContext).build(); AsyncHttpClient client = new AsyncHttpClient(new GrizzlyAsyncHttpProvider(config), config); long start = System.currentTimeMillis(); try { client.executeRequest(client.prepareGet("http://www.google.com").build()).get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } LOGGER.debug("COMPLETE: " + (System.currentTimeMillis() - start) + "ms"); } }
@Test(groups = { "standalone", "default_provider" }) public void zeroCopyPostTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(new Builder().setSSLContext(createSSLContext(new AtomicBoolean(true))).build())) { ClassLoader cl = getClass().getClassLoader(); // override system properties URL url = cl.getResource("SimpleTextFile.txt"); File file = new File(url.toURI()); Future<Response> f = client.preparePost(getTargetUrl()).setBody(file).setHeader("Content-Type", "text/html").execute(); Response resp = f.get(); assertNotNull(resp); assertEquals(resp.getStatusCode(), HttpServletResponse.SC_OK); assertEquals(resp.getResponseBody(), "This is a simple test file"); } }
private void doTest(boolean usePreemptiveAuth) throws UnknownHostException, InterruptedException, ExecutionException { try (AsyncHttpClient client = getAsyncHttpClient(new AsyncHttpClientConfig.Builder().setSSLContext(createSSLContext(new AtomicBoolean(true))).build())) { Request request = new RequestBuilder("GET") .setProxyServer(basicProxy()) .setUrl(getTargetUrl2()) .setRealm(new Realm.RealmBuilder() .setPrincipal("user") .setPassword("passwd") .setScheme(AuthScheme.BASIC) .setUsePreemptiveAuth(usePreemptiveAuth) .build()) .build(); Future<Response> responseFuture = client.executeRequest(request); Response response = responseFuture.get(); Assert.assertEquals(response.getStatusCode(), HttpServletResponse.SC_OK); Assert.assertEquals("127.0.0.1:" + port2, response.getHeader("x-host")); } }
@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); } }
@Test(groups = { "standalone", "default_provider" }) public void remoteIDHostnameVerifierTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(new Builder().setHostnameVerifier(new CheckHost("bouette")).setSSLContext(createSSLContext()).build())) { ClassLoader cl = getClass().getClassLoader(); // override system properties URL url = cl.getResource("SimpleTextFile.txt"); File file = new File(url.toURI()); try { client.preparePost(getTargetUrl()).setBody(file).setHeader("Content-Type", "text/html").execute().get(); } catch (ExecutionException ex) { assertTrue(ex.getCause() instanceof ConnectException); } } }
@Test(groups = { "standalone", "default_provider" }) public void negativeHostnameVerifierTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(new Builder().setHostnameVerifier(new NegativeHostVerifier()).setSSLContext(createSSLContext()).build())) { ClassLoader cl = getClass().getClassLoader(); // override system properties URL url = cl.getResource("SimpleTextFile.txt"); File file = new File(url.toURI()); try { client.preparePost(getTargetUrl()).setBody(file).setHeader("Content-Type", "text/html").execute().get(); } catch (ExecutionException ex) { assertTrue(ex.getCause() instanceof ConnectException); } } }
@Test(groups = { "standalone", "default_provider" }) public void remotePosHostnameVerifierTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(new Builder().setHostnameVerifier(new CheckHost("localhost")).setSSLContext(createSSLContext()).build())) { ClassLoader cl = getClass().getClassLoader(); // override system properties URL url = cl.getResource("SimpleTextFile.txt"); File file = new File(url.toURI()); try { client.preparePost(getTargetUrl()).setBody(file).setHeader("Content-Type", "text/html").execute().get(); } catch (ExecutionException ex) { assertTrue(ex.getCause() instanceof ConnectException); } } }
@Test(groups = { "standalone", "default_provider" }) public void positiveHostnameVerifierTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(new Builder().setHostnameVerifier(new PositiveHostVerifier()).setSSLContext(createSSLContext()).build())) { ClassLoader cl = getClass().getClassLoader(); // override system properties URL url = cl.getResource("SimpleTextFile.txt"); File file = new File(url.toURI()); Future<Response> f = client.preparePost(getTargetUrl()).setBody(file).setHeader("Content-Type", "text/html").execute(); Response resp = f.get(); assertNotNull(resp); assertEquals(resp.getStatusCode(), HttpServletResponse.SC_OK); assertEquals(resp.getResponseBody(), "This is a simple test file"); } }
public Builder setSSLContext(final SSLContext sslContext) { configBuilder.setSSLContext(sslContext); return this; }
public Builder setSSLContext(final SSLContext sslContext) { configBuilder.setSSLContext(sslContext); return this; }
@Test(groups = { "standalone", "default_provider" }) public void multipleSSLWithoutCacheTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(new Builder().setSSLContext(createSSLContext(new AtomicBoolean(true))).setAllowPoolingSslConnections(false).build())) { String body = "hello there"; client.preparePost(getTargetUrl()).setBody(body).setHeader("Content-Type", "text/html").execute(); client.preparePost(getTargetUrl()).setBody(body).setHeader("Content-Type", "text/html").execute(); Response response = client.preparePost(getTargetUrl()).setBody(body).setHeader("Content-Type", "text/html").execute().get(); assertEquals(response.getResponseBody(), body); } }
protected AsyncHttpClient createHttpClient() throws KeyManagementException, NoSuchAlgorithmException { final AsyncHttpClientConfig.Builder builder = new AsyncHttpClientConfig.Builder(); // Don't limit the number of connections per host // See https://github.com/ning/async-http-client/issues/issue/28 builder.setMaxConnectionsPerHost(-1); builder.setSSLContext(SslUtils.getInstance().getSSLContext()); return new AsyncHttpClient(builder.build()); }
/** * Set ssl context for {@link com.ning.http.client.AsyncHttpClientConfig.Builder} * * @param asyncNingBuilder {@link com.ning.http.client.AsyncHttpClientConfig.Builder} instance to * configure. * @throws IOException if an IO error occurred. */ public void configure(AsyncHttpClientConfig.Builder asyncNingBuilder) throws IOException { if (asyncNingBuilder != null) { asyncNingBuilder.setSSLContext(context); asyncNingBuilder.setHostnameVerifier(getHostnameVerifier()); } }
@Test(groups = { "standalone", "default_provider" }) public void multipleSSLRequestsTest() throws Throwable { try (AsyncHttpClient c = getAsyncHttpClient(new Builder().setSSLContext(createSSLContext(new AtomicBoolean(true))).build())) { 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); } }
public MonitorTask(URLMonitorConfig config, MessageInput messageInput) { this.config = config; this.messageInput = messageInput; this.mapper = new ObjectMapper(); AsyncHttpClientConfig.Builder configBuilder = new AsyncHttpClientConfig.Builder(); configBuilder.setEnabledProtocols(new String[] {"TLSv1.2", "TLSv1.1", "TLSv1"}); configBuilder.setSSLContext(getSSLContext()); httpClient = new AsyncHttpClient(configBuilder.build()); buildRequest(); }
@Test public void handlesCloseResponse() throws IOException, InterruptedException, ExecutionException { AsyncHttpClientConfig config = new Builder().setSSLContext(createSSLContext(new AtomicBoolean(true))).build(); try (AsyncHttpClient client = getAsyncHttpClient(config)) { Request request = new RequestBuilder("GET").setHeader("Connection", "keep-alive").setUrl(getTargetUrl()).build(); Future<Response> responseFuture = client.executeRequest(request); int status = responseFuture.get().getStatusCode(); Assert.assertEquals(status, 200); } }
public Builder setSSLContext(final SSLContext sslContext) { configBuilder.setSSLContext(sslContext); return this; }
private AsyncHttpClient buildAsyncHttpClient(final Boolean strictSSL, final int readTimeout, final int connectTimeout) throws GeneralSecurityException { AsyncHttpClientConfig.Builder cfg = new AsyncHttpClientConfig.Builder(); cfg.setUserAgent(USER_AGENT) .setConnectTimeout(connectTimeout) .setReadTimeout(readTimeout); if (!strictSSL) { cfg.setSSLContext(SslUtils.getInstance().getSSLContext(!strictSSL)); } return new AsyncHttpClient(cfg.build()); }
public Builder setSSLContext(final SSLContext sslContext) { configBuilder.setSSLContext(sslContext); return this; }