You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2016/12/04 13:50:00 UTC

svn commit: r1772536 [2/2] - in /httpcomponents/httpcore/trunk: httpcore5-h2/src/examples/ httpcore5-h2/src/examples/org/ httpcore5-h2/src/examples/org/apache/ httpcore5-h2/src/examples/org/apache/hc/ httpcore5-h2/src/examples/org/apache/hc/core5/ http...

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/AsyncRequestExecutionExample.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/AsyncRequestExecutionExample.java?rev=1772536&r1=1772535&r2=1772536&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/AsyncRequestExecutionExample.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/AsyncRequestExecutionExample.java Sun Dec  4 13:49:59 2016
@@ -26,21 +26,26 @@
  */
 package org.apache.hc.core5.http.examples;
 
-import java.net.URI;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.hc.core5.concurrent.FutureCallback;
+import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.impl.Http1StreamListener;
 import org.apache.hc.core5.http.impl.nio.bootstrap.HttpAsyncRequester;
 import org.apache.hc.core5.http.impl.nio.bootstrap.PooledClientEndpoint;
 import org.apache.hc.core5.http.impl.nio.bootstrap.RequesterBootstrap;
+import org.apache.hc.core5.http.message.RequestLine;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.http.nio.BasicRequestProducer;
 import org.apache.hc.core5.http.nio.BasicResponseConsumer;
 import org.apache.hc.core5.http.nio.entity.StringAsyncEntityConsumer;
+import org.apache.hc.core5.reactor.IOReactorConfig;
 
 /**
  * Example of asynchronous HTTP/1.1 request execution.
@@ -49,8 +54,39 @@ public class AsyncRequestExecutionExampl
 
     public static void main(String[] args) throws Exception {
 
+        IOReactorConfig ioReactorConfig = IOReactorConfig.custom()
+                .setConnectTimeout(5000)
+                .setSoTimeout(5000)
+                .build();
+
         // Create and start requester
-        final HttpAsyncRequester requester = RequesterBootstrap.bootstrap().create();
+        final HttpAsyncRequester requester = RequesterBootstrap.bootstrap()
+                .setIOReactorConfig(ioReactorConfig)
+                .setStreamListener(new Http1StreamListener() {
+
+                    @Override
+                    public void onRequestHead(final HttpConnection connection, final HttpRequest request) {
+                        System.out.println(connection + " " + new RequestLine(request));
+
+                    }
+
+                    @Override
+                    public void onResponseHead(final HttpConnection connection, final HttpResponse response) {
+                        System.out.println(connection + " " + new StatusLine(response));
+                    }
+
+                    @Override
+                    public void onExchangeComplete(final HttpConnection connection, final boolean keepAlive) {
+                        if (keepAlive) {
+                            System.out.println(connection + " can be kept alive");
+                        } else {
+                            System.out.println(connection + " cannot be kept alive");
+                        }
+                    }
+
+                })
+                .create();
+
         Runtime.getRuntime().addShutdownHook(new Thread() {
             @Override
             public void run() {
@@ -60,18 +96,15 @@ public class AsyncRequestExecutionExampl
         });
         requester.start();
 
-        // Execute HTTP GETs to the following hosts and
-        HttpHost[] targets = new HttpHost[] {
-                new HttpHost("www.apache.org", 80, "http"),
-                new HttpHost("hc.apache.org", 80, "http")
-        };
+        HttpHost target = new HttpHost("httpbin.org");
+        String[] requestUris = new String[] {"/", "/ip", "/user-agent", "/headers"};
 
-        final CountDownLatch latch = new CountDownLatch(targets.length);
-        for (final HttpHost target: targets) {
+        final CountDownLatch latch = new CountDownLatch(requestUris.length);
+        for (final String requestUri: requestUris) {
             final Future<PooledClientEndpoint> future = requester.connect(target, 5, TimeUnit.SECONDS);
             final PooledClientEndpoint clientEndpoint = future.get();
             clientEndpoint.executeAndRelease(
-                    new BasicRequestProducer("GET", URI.create("/")),
+                    new BasicRequestProducer("GET", target, requestUri),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()),
                     new FutureCallback<Message<HttpResponse, String>>() {
 
@@ -79,19 +112,21 @@ public class AsyncRequestExecutionExampl
                         public void completed(final Message<HttpResponse, String> message) {
                             latch.countDown();
                             HttpResponse response = message.getHead();
-                            System.out.println(target + "->" + response.getCode());
+                            String body = message.getBody();
+                            System.out.println(requestUri + "->" + response.getCode());
+                            System.out.println(body);
                         }
 
                         @Override
                         public void failed(final Exception ex) {
                             latch.countDown();
-                            System.out.println(target + "->" + ex);
+                            System.out.println(requestUri + "->" + ex);
                         }
 
                         @Override
                         public void cancelled() {
                             latch.countDown();
-                            System.out.println(target + " cancelled");
+                            System.out.println(requestUri + " cancelled");
                         }
 
                     });

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicGetExecutionExample.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicGetExecutionExample.java?rev=1772536&r1=1772535&r2=1772536&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicGetExecutionExample.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicGetExecutionExample.java Sun Dec  4 13:49:59 2016
@@ -74,22 +74,21 @@ public class ClassicGetExecutionExample
 
                 })
                 .create();
-        HttpHost host = new HttpHost("localhost", 8080);
 
         HttpCoreContext coreContext = HttpCoreContext.create();
-        String[] targets = {
-                "/",
-                "/examples/servlets/servlet/RequestInfoExample",
-                "/somewhere%20in%20pampa"};
+        HttpHost target = new HttpHost("httpbin.org");
+        String[] requestUris = new String[] {"/", "/ip", "/user-agent", "/headers"};
 
         SocketConfig socketConfig = SocketConfig.custom()
                 .setConnectTimeout(5000)
                 .setSoTimeout(5000)
                 .build();
 
-        for (int i = 0; i < targets.length; i++) {
-            ClassicHttpRequest request = new BasicClassicHttpRequest("GET", host, targets[i]);
-            try (ClassicHttpResponse response = httpRequester.execute(host, request, socketConfig, coreContext)) {
+        for (int i = 0; i < requestUris.length; i++) {
+            String requestUri = requestUris[i];
+            ClassicHttpRequest request = new BasicClassicHttpRequest("GET", target, requestUri);
+            try (ClassicHttpResponse response = httpRequester.execute(target, request, socketConfig, coreContext)) {
+                System.out.println(requestUri + "->" + response.getCode());
                 System.out.println(EntityUtils.toString(response.getEntity()));
                 System.out.println("==============");
             }

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicPostExecutionExample.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicPostExecutionExample.java?rev=1772536&r1=1772535&r2=1772536&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicPostExecutionExample.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicPostExecutionExample.java Sun Dec  4 13:49:59 2016
@@ -82,9 +82,9 @@ public class ClassicPostExecutionExample
 
                 })
                 .create();
-        HttpHost host = new HttpHost("localhost", 8080);
-
         HttpCoreContext coreContext = HttpCoreContext.create();
+        HttpHost target = new HttpHost("httpbin.org");
+
         HttpEntity[] requestBodies = {
                 new StringEntity(
                         "This is the first test request",
@@ -104,11 +104,12 @@ public class ClassicPostExecutionExample
                 .setSoTimeout(5000)
                 .build();
 
+        String requestUri = "/post";
         for (int i = 0; i < requestBodies.length; i++) {
-            ClassicHttpRequest request = new BasicClassicHttpRequest("POST", host,
-                    "/examples/servlets/servlet/RequestInfoExample");
+            ClassicHttpRequest request = new BasicClassicHttpRequest("POST", target,requestUri);
             request.setEntity(requestBodies[i]);
-            try (ClassicHttpResponse response = httpRequester.execute(host, request, socketConfig, coreContext)) {
+            try (ClassicHttpResponse response = httpRequester.execute(target, request, socketConfig, coreContext)) {
+                System.out.println(requestUri + "->" + response.getCode());
                 System.out.println(EntityUtils.toString(response.getEntity()));
                 System.out.println("==============");
             }

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicPostWithTrailersExecutionExample.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicPostWithTrailersExecutionExample.java?rev=1772536&r1=1772535&r2=1772536&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicPostWithTrailersExecutionExample.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ClassicPostWithTrailersExecutionExample.java Sun Dec  4 13:49:59 2016
@@ -48,11 +48,12 @@ import org.apache.hc.core5.http.protocol
 public class ClassicPostWithTrailersExecutionExample {
     public static void main(String[] args) throws Exception {
         HttpRequester httpRequester = RequesterBootstrap.bootstrap().create();
-        HttpHost host = new HttpHost("localhost", 8080);
 
         HttpCoreContext coreContext = HttpCoreContext.create();
+        HttpHost target = new HttpHost("httpbin.org");
 
-        ClassicHttpRequest request = new BasicClassicHttpRequest("POST", host, "/");
+        String requestUri = "/post";
+        ClassicHttpRequest request = new BasicClassicHttpRequest("POST", target, requestUri);
         HttpEntity requestBody = new HttpEntityWithTrailers(
                 new StringEntity("Chunked message with trailers", ContentType.TEXT_PLAIN),
                 new BasicHeader("t1","Hello world"));
@@ -64,8 +65,8 @@ public class ClassicPostWithTrailersExec
                 .build();
 
         System.out.println(">> Request URI: " + request.getUri());
-        try (ClassicHttpResponse response = httpRequester.execute(host, request, socketConfig, coreContext)) {
-            System.out.println("<< Response: " + response.getCode());
+        try (ClassicHttpResponse response = httpRequester.execute(target, request, socketConfig, coreContext)) {
+            System.out.println(requestUri + "->" + response.getCode());
             System.out.println(EntityUtils.toString(response.getEntity()));
             System.out.println("==============");
         }

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/bootstrap/HttpRequester.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/bootstrap/HttpRequester.java?rev=1772536&r1=1772535&r2=1772536&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/bootstrap/HttpRequester.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/bootstrap/HttpRequester.java Sun Dec  4 13:49:59 2016
@@ -78,7 +78,7 @@ public class HttpRequester implements Au
     private final HttpConnectionFactory<? extends HttpClientConnection> connectFactory;
     private final SSLSocketFactory sslSocketFactory;
 
-    HttpRequester(
+    public HttpRequester(
             final HttpRequestExecutor requestExecutor,
             final HttpProcessor httpProcessor,
             final ControlledConnPool<HttpHost, HttpClientConnection> connPool,

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/bootstrap/HttpServer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/bootstrap/HttpServer.java?rev=1772536&r1=1772535&r2=1772536&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/bootstrap/HttpServer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/bootstrap/HttpServer.java Sun Dec  4 13:49:59 2016
@@ -68,7 +68,7 @@ public class HttpServer implements AutoC
     private volatile ServerSocket serverSocket;
     private volatile RequestListener requestListener;
 
-    HttpServer(
+    public HttpServer(
             final int port,
             final InetAddress ifAddress,
             final SocketConfig socketConfig,

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/bootstrap/AsyncRequester.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/bootstrap/AsyncRequester.java?rev=1772536&r1=1772535&r2=1772536&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/bootstrap/AsyncRequester.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/bootstrap/AsyncRequester.java Sun Dec  4 13:49:59 2016
@@ -34,6 +34,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.hc.core5.function.Callback;
 import org.apache.hc.core5.http.ExceptionListener;
+import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.net.NamedEndpoint;
 import org.apache.hc.core5.reactor.ConnectionInitiator;
 import org.apache.hc.core5.reactor.DefaultConnectingIOReactor;
@@ -71,14 +72,30 @@ public class AsyncRequester extends IORe
         return new DefaultConnectingIOReactor(ioEventHandlerFactory, ioReactorConfig, threadFactory);
     }
 
+    private NamedEndpoint toEndpoint(final HttpHost host) {
+        int port = host.getPort();
+        if (port < 0) {
+            final String hostName = host.getHostName();
+            final String scheme = host.getSchemeName();
+            if ("http".equalsIgnoreCase(scheme)) {
+                port = 80;
+            } else if ("https".equalsIgnoreCase(scheme)) {
+                port = 443;
+            }
+            return new HttpHost(hostName, port, scheme);
+        } else {
+            return host;
+        }
+    }
+
     protected SessionRequest requestSession(
-            final NamedEndpoint remoteEndpoint,
+            final HttpHost host,
             final long timeout,
             final TimeUnit timeUnit,
             final SessionRequestCallback callback) {
-        Args.notNull(remoteEndpoint, "Remote endpoint");
+        Args.notNull(host, "Host");
         Args.notNull(timeUnit, "Time unit");
-        final SessionRequest  sessionRequest = reactor().connect(remoteEndpoint, null, null, callback);
+        final SessionRequest  sessionRequest = reactor().connect(toEndpoint(host), null, null, callback);
         sessionRequest.setConnectTimeout((int) timeUnit.toMillis(timeout));
         return sessionRequest;
     }

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java?rev=1772536&r1=1772535&r2=1772536&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java Sun Dec  4 13:49:59 2016
@@ -196,7 +196,7 @@ public class BasicHttpRequest extends He
     @Override
     public String toString() {
         final StringBuilder sb = new StringBuilder();
-        sb.append(this.method).append(" ").append(this.scheme).append("://").append(this.authority).append("/").append(this.path);
+        sb.append(this.method).append(" ").append(this.scheme).append("://").append(this.authority).append(this.path);
         return sb.toString();
     }
 

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/BasicRequestProducer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/BasicRequestProducer.java?rev=1772536&r1=1772535&r2=1772536&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/BasicRequestProducer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/BasicRequestProducer.java Sun Dec  4 13:49:59 2016
@@ -30,6 +30,7 @@ import java.io.IOException;
 import java.net.URI;
 
 import org.apache.hc.core5.http.EntityDetails;
+import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.message.BasicHttpRequest;
 
@@ -43,6 +44,14 @@ public class BasicRequestProducer implem
         this.dataProducer = dataProducer;
     }
 
+    public BasicRequestProducer(final String method, final HttpHost host, final String path, final AsyncEntityProducer dataProducer) {
+        this(new BasicHttpRequest(method, host, path), dataProducer);
+    }
+
+    public BasicRequestProducer(final String method, final HttpHost host, final String path) {
+        this(method, host, path, null);
+    }
+
     public BasicRequestProducer(final String method, final URI requestUri, final AsyncEntityProducer dataProducer) {
         this(new BasicHttpRequest(method, requestUri), dataProducer);
     }