use of org.apache.hc.core5.http.protocol.DefaultHttpProcessor in project httpcomponents-core by apache.
the class Http1IntegrationTest method testSimpleGetIdentityTransfer.
@Test
public void testSimpleGetIdentityTransfer() throws Exception {
server.register("/hello", () -> new SingleLineResponseHandler("Hi there"));
final HttpProcessor httpProcessor = new DefaultHttpProcessor(new RequestValidateHost());
final InetSocketAddress serverEndpoint = server.start(httpProcessor, Http1Config.DEFAULT);
client.start();
final int reqNo = 5;
for (int i = 0; i < reqNo; i++) {
final Future<ClientSessionEndpoint> connectFuture = client.connect("localhost", serverEndpoint.getPort(), TIMEOUT);
final ClientSessionEndpoint streamEndpoint = connectFuture.get();
final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(new BasicRequestProducer(Method.GET, createRequestURI(serverEndpoint, "/hello")), new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
final Message<HttpResponse, String> result = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
streamEndpoint.close();
Assertions.assertNotNull(result);
final HttpResponse response = result.getHead();
final String entity = result.getBody();
Assertions.assertNotNull(response);
Assertions.assertEquals(200, response.getCode());
Assertions.assertEquals("Hi there", entity);
}
}
use of org.apache.hc.core5.http.protocol.DefaultHttpProcessor in project httpcomponents-core by apache.
the class Http1IntegrationTest method testHeaderTooLargePost.
@Test
public void testHeaderTooLargePost() throws Exception {
server.register("/hello", () -> new SingleLineResponseHandler("Hi there"));
final InetSocketAddress serverEndpoint = server.start(null, Http1Config.custom().setMaxLineLength(100).build());
client.start(new DefaultHttpProcessor(RequestContent.INSTANCE, RequestTargetHost.INSTANCE, RequestConnControl.INSTANCE), null);
final Future<ClientSessionEndpoint> connectFuture = client.connect("localhost", serverEndpoint.getPort(), TIMEOUT);
final ClientSessionEndpoint streamEndpoint = connectFuture.get();
final HttpRequest request1 = new BasicHttpRequest(Method.POST, createRequestURI(serverEndpoint, "/hello"));
request1.setHeader("big-f-header", "1234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890");
final byte[] b = new byte[2048];
for (int i = 0; i < b.length; i++) {
b[i] = (byte) ('a' + i % 10);
}
final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(new BasicRequestProducer(request1, AsyncEntityProducers.create(b, ContentType.TEXT_PLAIN)), new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
final Message<HttpResponse, String> result1 = future1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
Assertions.assertNotNull(result1);
final HttpResponse response1 = result1.getHead();
Assertions.assertNotNull(response1);
Assertions.assertEquals(431, response1.getCode());
Assertions.assertEquals("Maximum line length limit exceeded", result1.getBody());
}
use of org.apache.hc.core5.http.protocol.DefaultHttpProcessor in project httpcomponents-core by apache.
the class ClassicIntegrationTest method testAbsentHostHeader.
@Test
public void testAbsentHostHeader() throws Exception {
// Initialize the server-side request handler
this.server.registerHandler("*", (request, response, context) -> response.setEntity(new StringEntity("All is well", StandardCharsets.US_ASCII)));
this.server.start();
this.client.start(new DefaultHttpProcessor(RequestContent.INSTANCE, new RequestConnControl()));
final HttpCoreContext context = HttpCoreContext.create();
final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
final BasicClassicHttpRequest get1 = new BasicClassicHttpRequest(Method.GET, "/");
get1.setVersion(HttpVersion.HTTP_1_0);
try (final ClassicHttpResponse response1 = this.client.execute(host, get1, context)) {
Assertions.assertEquals(200, response1.getCode());
EntityUtils.consume(response1.getEntity());
}
final BasicClassicHttpRequest get2 = new BasicClassicHttpRequest(Method.GET, "/");
try (final ClassicHttpResponse response2 = this.client.execute(host, get2, context)) {
Assertions.assertEquals(400, response2.getCode());
EntityUtils.consume(response2.getEntity());
}
}
use of org.apache.hc.core5.http.protocol.DefaultHttpProcessor in project httpcomponents-core by apache.
the class ClassicIntegrationTest method testHttpPostNoContentLength.
@Test
public void testHttpPostNoContentLength() throws Exception {
this.server.registerHandler("*", (request, response, context) -> {
final HttpEntity entity = request.getEntity();
if (entity != null) {
final byte[] data = EntityUtils.toByteArray(entity);
response.setEntity(new ByteArrayEntity(data, null));
}
});
this.server.start();
this.client.start(new DefaultHttpProcessor(RequestTargetHost.INSTANCE, RequestConnControl.INSTANCE, RequestUserAgent.INSTANCE, new RequestExpectContinue()));
final HttpCoreContext context = HttpCoreContext.create();
final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
final BasicClassicHttpRequest post = new BasicClassicHttpRequest(Method.POST, "/");
post.setEntity(null);
try (final ClassicHttpResponse response = this.client.execute(host, post, context)) {
Assertions.assertEquals(HttpStatus.SC_OK, response.getCode());
final byte[] received = EntityUtils.toByteArray(response.getEntity());
Assertions.assertEquals(0, received.length);
}
}
use of org.apache.hc.core5.http.protocol.DefaultHttpProcessor in project httpcomponents-core by apache.
the class ClassicIntegrationTest method testHttpPostIdentity.
@Test
public void testHttpPostIdentity() throws Exception {
this.server.registerHandler("*", (request, response, context) -> {
final HttpEntity entity = request.getEntity();
if (entity != null) {
final byte[] data = EntityUtils.toByteArray(entity);
response.setEntity(new ByteArrayEntity(data, null));
}
});
this.server.start();
this.client.start(new DefaultHttpProcessor((request, entity, context) -> request.addHeader(HttpHeaders.TRANSFER_ENCODING, "identity"), RequestTargetHost.INSTANCE, RequestConnControl.INSTANCE, RequestUserAgent.INSTANCE, new RequestExpectContinue()));
final HttpCoreContext context = HttpCoreContext.create();
final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
final BasicClassicHttpRequest post = new BasicClassicHttpRequest(Method.POST, "/");
post.setEntity(null);
try (final ClassicHttpResponse response = this.client.execute(host, post, context)) {
Assertions.assertEquals(HttpStatus.SC_NOT_IMPLEMENTED, response.getCode());
}
}
Aggregations