public Future<Response> get(ThrowableHandler throwableHandler) throws IOException { RequestBuilder r = rebuildRequest(requestBuilder.build()); return execute(r, null, throwableHandler); }
@Test(groups = { "standalone", "default_provider" }) public void requestByteArrayOutputStreamBodyConsumerTest() throws Throwable { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).setUrl(getTargetUrl()).build(); try { ByteArrayOutputStream o = new ByteArrayOutputStream(10); Future<Response> future = client.post(new InputStreamBodyGenerator(new ByteArrayInputStream(MY_MESSAGE.getBytes())), new OutputStreamBodyConsumer(o)); System.out.println("waiting for response"); Response response = future.get(); assertEquals(response.getStatusCode(), 200); assertEquals(o.toString(), MY_MESSAGE); } finally { client.close(); } }
@Test(groups = { "standalone", "default_provider" }) public void testDeriveOverrideURL() throws Exception { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).setUrl("http://invalid.url").build(); SimpleAsyncHttpClient derived = client.derive().setUrl(getTargetUrl()).build(); try { ByteArrayOutputStream o = new ByteArrayOutputStream(10); InputStreamBodyGenerator generator = new InputStreamBodyGenerator(new ByteArrayInputStream(MY_MESSAGE.getBytes())); OutputStreamBodyConsumer consumer = new OutputStreamBodyConsumer(o); Future<Response> future = derived.post(generator, consumer); Response response = future.get(); assertEquals(response.getStatusCode(), 200); assertEquals(o.toString(), MY_MESSAGE); } finally { client.close(); derived.close(); } }
public SimpleAsyncHttpClient build() { if (realmBuilder != null) { configBuilder.setRealm(realmBuilder.build()); } if (proxyHost != null) { configBuilder.setProxyServer(new ProxyServer(proxyProtocol, proxyHost, proxyPort, proxyPrincipal, proxyPassword)); } configBuilder.addIOExceptionFilter(new ResumableIOExceptionFilter()); SimpleAsyncHttpClient sc = new SimpleAsyncHttpClient(configBuilder.build(), requestBuilder, defaultThrowableHandler, errorDocumentBehaviour, enableResumableDownload, ahc, listener, providerClass); return sc; } }
private Future<Response> execute(RequestBuilder rb, BodyConsumer bodyConsumer, ThrowableHandler throwableHandler) throws IOException { if (throwableHandler == null) { throwableHandler = defaultThrowableHandler; } Request request = rb.build(); ProgressAsyncHandler<Response> handler = new BodyConsumerAsyncHandler(bodyConsumer, throwableHandler, errorDocumentBehaviour, request.getUri(), listener); if (resumeEnabled && request.getMethod().equals("GET") && bodyConsumer != null && bodyConsumer instanceof ResumableBodyConsumer) { ResumableBodyConsumer fileBodyConsumer = (ResumableBodyConsumer) bodyConsumer; long length = fileBodyConsumer.getTransferredBytes(); fileBodyConsumer.resume(); handler = new ResumableBodyConsumerAsyncHandler(length, handler); } return asyncHttpClient().executeRequest(request, handler); }
@Test(groups = { "standalone", "default_provider" }) public void testCloseDerivedValidMaster() throws Exception { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).setUrl(getTargetUrl()).build(); try { SimpleAsyncHttpClient derived = client.derive().build(); derived.get().get(); derived.close(); Response response = client.get().get(); assertEquals(response.getStatusCode(), 200); } finally { client.close(); } }
@Test(groups = { "standalone", "default_provider" }) public void testDerive() throws Exception { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).build(); SimpleAsyncHttpClient derived = client.derive().build(); try { assertNotSame(derived, client); } finally { client.close(); derived.close(); } }
final SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder() .setRequestTimeoutInMs(Integer.MAX_VALUE) .setUrl(url) .build(); client.post(new ByteArrayBodyGenerator(YOUR_BYTE_ARRAY)).get();
@Test(groups = { "standalone", "default_provider" }) public void testMultiPartPut() throws Exception { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).setUrl(getTargetUrl() + "/multipart").build(); try { Response response = client.put(new ByteArrayPart("baPart", "testMultiPart".getBytes(UTF_8), "application/test", UTF_8, "fileName")).get(); String body = response.getResponseBody(); String contentType = response.getHeader("X-Content-Type"); assertTrue(contentType.contains("multipart/form-data")); String boundary = contentType.substring(contentType.lastIndexOf("=") + 1); assertTrue(body.startsWith("--" + boundary)); assertTrue(body.trim().endsWith("--" + boundary + "--")); assertTrue(body.contains("Content-Disposition:")); assertTrue(body.contains("Content-Type: application/test")); assertTrue(body.contains("name=\"baPart")); assertTrue(body.contains("filename=\"fileName")); } finally { client.close(); } }
@Test(groups = { "online", "default_provider" }) public void testSimpleAHCConfigProxy() throws IOException, InterruptedException, ExecutionException, TimeoutException { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder()// .setProxyProtocol(ProxyServer.Protocol.HTTPS)// .setProxyHost("127.0.0.1")// .setProxyPort(port1)// .setFollowRedirects(true)// .setUrl(getTargetUrl2())// .setAcceptAnyCertificate(true)// .setHeader("Content-Type", "text/html").build(); try { Response r = client.get().get(); assertEquals(r.getStatusCode(), 200); assertEquals(r.getHeader("X-Connection"), "keep-alive"); } finally { client.close(); } }
@Override protected void close() throws XmlRpcClientException { if ( client != null ) { client.close(); } } }
@Test(groups = { "standalone", "default_provider" }) public void testOmitErrorBody() throws Throwable { try (SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setUrl(getTargetUrl() + "/nonexistent").setErrorDocumentBehaviour(ErrorDocumentBehaviour.OMIT).build()) { ByteArrayOutputStream o = new ByteArrayOutputStream(10); Future<Response> future = client.get(new OutputStreamBodyConsumer(o)); System.out.println("waiting for response"); Response response = future.get(); assertEquals(response.getStatusCode(), 404); assertEquals(o.toString(), ""); assertEquals(response.getResponseBody(), ""); } }
@Test(groups = { "standalone", "default_provider" }) public void testMultiPartPost() throws Exception { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).setUrl(getTargetUrl() + "/multipart").build(); try { Response response = client.post(new ByteArrayPart("baPart", "testMultiPart".getBytes(UTF_8), "application/test", UTF_8, "fileName")).get(); String body = response.getResponseBody(); String contentType = response.getHeader("X-Content-Type"); assertTrue(contentType.contains("multipart/form-data")); String boundary = contentType.substring(contentType.lastIndexOf("=") + 1); assertTrue(body.startsWith("--" + boundary)); assertTrue(body.trim().endsWith("--" + boundary + "--")); assertTrue(body.contains("Content-Disposition:")); assertTrue(body.contains("Content-Type: application/test")); assertTrue(body.contains("name=\"baPart")); assertTrue(body.contains("filename=\"fileName")); } finally { client.close(); } } }
public SimpleAsyncHttpClient build() { if (realmBuilder != null) { configBuilder.setRealm(realmBuilder.build()); } if (proxyHost != null) { configBuilder.setProxyServer(new ProxyServer(proxyProtocol, proxyHost, proxyPort, proxyPrincipal, proxyPassword)); } configBuilder.addIOExceptionFilter(new ResumableIOExceptionFilter()); SimpleAsyncHttpClient sc = new SimpleAsyncHttpClient(configBuilder.build(), requestBuilder, defaultThrowableHandler, errorDocumentBehaviour, enableResumableDownload, ahc, listener, providerClass); return sc; } }
private Future<Response> execute(RequestBuilder rb, BodyConsumer bodyConsumer, ThrowableHandler throwableHandler) throws IOException { if (throwableHandler == null) { throwableHandler = defaultThrowableHandler; } Request request = rb.build(); ProgressAsyncHandler<Response> handler = new BodyConsumerAsyncHandler(bodyConsumer, throwableHandler, errorDocumentBehaviour, request.getUri(), listener); if (resumeEnabled && request.getMethod().equals("GET") && bodyConsumer != null && bodyConsumer instanceof ResumableBodyConsumer) { ResumableBodyConsumer fileBodyConsumer = (ResumableBodyConsumer) bodyConsumer; long length = fileBodyConsumer.getTransferredBytes(); fileBodyConsumer.resume(); handler = new ResumableBodyConsumerAsyncHandler(length, handler); } return asyncHttpClient().executeRequest(request, handler); }
@Test(groups = { "standalone", "default_provider" }) public void testCloseMasterInvalidDerived() throws Exception { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).setUrl(getTargetUrl()).build(); SimpleAsyncHttpClient derived = client.derive().build(); client.close(); try { derived.get().get(); fail("Expected closed AHC"); // expected -- Seems to me that this behavior conflicts with the requirements of Future.get() } catch (ExecutionException e) { assertTrue(e.getCause() instanceof IOException); } finally { client.close(); derived.close(); } }
@Test(groups = { "standalone", "default_provider" }) public void testNullUrl() throws Exception { SimpleAsyncHttpClient client = null; try { client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).build().derive().build(); } finally { if (client != null) client.close(); } }
@Override protected InputStream getInputStream() throws XmlRpcException { try { client = builder.setHeaders( headers ).build(); // Check the status of the return Response response = client.post( new ByteArrayBodyGenerator( byteOs.toByteArray() ) ).get(); return response.getResponseBodyAsStream(); } catch ( InterruptedException e ) { throw new XmlRpcClientException( "Interruption during communication: " + e.getMessage(), e ); } catch ( ExecutionException e ) { throw new XmlRpcClientException( "Execution error during communication: " + e.getMessage(), e ); } catch ( IOException e ) { throw new XmlRpcClientException( "I/O error in server communication: " + e.getMessage(), e ); } finally { byteOs.reset(); } }
/** * See https://issues.sonatype.org/browse/AHC-5 */ @Test(groups = { "standalone", "default_provider" }, enabled = true) public void testPutZeroBytesFileTest() throws Throwable { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).setPooledConnectionIdleTimeout(100).setMaximumConnectionsTotal(50).setRequestTimeout(5 * 1000).setUrl(getTargetUrl() + "/testPutZeroBytesFileTest.txt").setHeader("Content-Type", "text/plain") .build(); try { File tmpfile = File.createTempFile("testPutZeroBytesFile", ".tmp"); tmpfile.deleteOnExit(); Future<Response> future = client.put(new FileBodyGenerator(tmpfile)); Response response = future.get(); tmpfile.delete(); assertEquals(response.getStatusCode(), 200); } finally { client.close(); } }
@Test(groups = { "standalone", "default_provider" }) public void testAccumulateErrorBody() throws Throwable { try (SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setUrl(getTargetUrl() + "/nonexistent").setErrorDocumentBehaviour(ErrorDocumentBehaviour.ACCUMULATE).build()) { ByteArrayOutputStream o = new ByteArrayOutputStream(10); Future<Response> future = client.get(new OutputStreamBodyConsumer(o)); System.out.println("waiting for response"); Response response = future.get(); assertEquals(response.getStatusCode(), 404); assertEquals(o.toString(), ""); assertTrue(response.getResponseBody().startsWith("<html>")); } }