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 2021/03/14 21:17:03 UTC

[httpcomponents-client] branch master updated (1174c24 -> 2404540)

This is an automated email from the ASF dual-hosted git repository.

olegk pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git.


    from 1174c24  Simple message builders
     new 567b53d  Improved async client examples
     new e0c19c0  Better javadocs for simple message classes
     new 2404540  Deprecated request factory classes in favor of request builders

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/hc/client5/http/fluent/Request.java |  34 +++----
 .../apache/hc/client5/http/fluent/TestRequest.java |  64 ++++++++----
 .../AbstractHttpAsyncClientAuthentication.java     |  89 ++++++++++++-----
 .../async/AbstractHttpAsyncFundamentalsTest.java   |  29 ++++--
 .../async/AbstractHttpAsyncRedirectsTest.java      | 109 +++++++++++++++------
 .../hc/client5/testing/async/TestHttp1Async.java   |  27 +++--
 .../testing/async/TestHttp1AsyncRedirects.java     |  20 ++--
 .../TestHttp1AsyncStatefulConnManagement.java      |  31 ++++--
 .../async/TestHttp1ClientAuthentication.java       |   9 +-
 .../client5/testing/async/TestHttp1Reactive.java   |   7 +-
 .../CachingHttpAsyncClientCompatibilityTest.java   |  27 +++--
 .../external/HttpAsyncClientCompatibilityTest.java |  32 ++++--
 .../http/async/methods/BasicHttpRequests.java      |   3 +
 .../http/async/methods/SimpleHttpRequest.java      |   7 ++
 .../http/async/methods/SimpleHttpRequests.java     |   3 +
 .../http/async/methods/SimpleHttpResponse.java     |   7 ++
 .../http/async/methods/SimpleRequestProducer.java  |   8 ++
 .../http/async/methods/SimpleResponseConsumer.java |   8 ++
 .../http/classic/methods/ClassicHttpRequests.java  |   3 +
 .../async/methods/SimpleBasicHttpRequests.java     |  91 -----------------
 .../http/async/methods/TestBasicHttpRequests.java  |  92 -----------------
 .../classic/methods/TestClassicHttpRequests.java   |  96 ------------------
 .../http/examples/AsyncClientAuthentication.java   |  20 ++--
 .../examples/AsyncClientConnectionEviction.java    |  25 ++---
 .../http/examples/AsyncClientCustomSSL.java        |  21 ++--
 .../examples/AsyncClientFullDuplexExchange.java    |  19 ++--
 .../examples/AsyncClientH2FullDuplexExchange.java  |  19 ++--
 .../http/examples/AsyncClientH2Multiplexing.java   |  18 ++--
 .../http/examples/AsyncClientH2ServerPush.java     |  15 +--
 .../http/examples/AsyncClientHttp1Pipelining.java  |  16 ++-
 .../http/examples/AsyncClientHttpExchange.java     |  22 +++--
 .../examples/AsyncClientHttpExchangeStreaming.java |  16 ++-
 .../http/examples/AsyncClientInterceptors.java     |  15 +--
 .../http/examples/AsyncClientMessageTrailers.java  |  22 +++--
 .../client5/http/examples/AsyncClientTlsAlpn.java  |  21 ++--
 35 files changed, 536 insertions(+), 509 deletions(-)
 delete mode 100644 httpclient5/src/test/java/org/apache/hc/client5/http/async/methods/SimpleBasicHttpRequests.java
 delete mode 100644 httpclient5/src/test/java/org/apache/hc/client5/http/async/methods/TestBasicHttpRequests.java
 delete mode 100644 httpclient5/src/test/java/org/apache/hc/client5/http/classic/methods/TestClassicHttpRequests.java


[httpcomponents-client] 01/03: Improved async client examples

Posted by ol...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

olegk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git

commit 567b53d4b1130a2522970bb76f6c5eef8555435c
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Sun Mar 14 20:08:37 2021 +0100

    Improved async client examples
---
 .../http/examples/AsyncClientAuthentication.java   | 20 ++++++++++-------
 .../examples/AsyncClientConnectionEviction.java    | 25 ++++++++++++----------
 .../http/examples/AsyncClientCustomSSL.java        | 21 +++++++++++-------
 .../examples/AsyncClientFullDuplexExchange.java    | 19 +++++++++-------
 .../examples/AsyncClientH2FullDuplexExchange.java  | 19 +++++++++-------
 .../http/examples/AsyncClientH2Multiplexing.java   | 18 ++++++++++------
 .../http/examples/AsyncClientH2ServerPush.java     | 15 +++++++------
 .../http/examples/AsyncClientHttp1Pipelining.java  | 16 +++++++++-----
 .../http/examples/AsyncClientHttpExchange.java     | 22 +++++++++++++------
 .../examples/AsyncClientHttpExchangeStreaming.java | 16 ++++++++++----
 .../http/examples/AsyncClientInterceptors.java     | 15 +++++++------
 .../http/examples/AsyncClientMessageTrailers.java  | 22 ++++++++++---------
 .../client5/http/examples/AsyncClientTlsAlpn.java  | 21 +++++++++++-------
 13 files changed, 152 insertions(+), 97 deletions(-)

diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientAuthentication.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientAuthentication.java
index f53270c..d917e2a 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientAuthentication.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientAuthentication.java
@@ -29,14 +29,17 @@ package org.apache.hc.client5.http.examples;
 import java.util.concurrent.Future;
 
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
+import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
+import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer;
 import org.apache.hc.client5.http.auth.AuthScope;
 import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
 import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
 import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
 import org.apache.hc.core5.concurrent.FutureCallback;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.io.CloseMode;
 
 /**
@@ -55,28 +58,29 @@ public class AsyncClientAuthentication {
                 .build();
         httpclient.start();
 
-        final String requestUri = "http://httpbin.org/basic-auth/user/passwd";
-        final SimpleHttpRequest httpget = SimpleHttpRequests.get(requestUri);
+        final SimpleHttpRequest request = SimpleRequestBuilder.get("http://httpbin.org/basic-auth/user/passwd")
+                .build();
 
-        System.out.println("Executing request " + requestUri);
+        System.out.println("Executing request " + request);
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                httpget,
+                SimpleRequestProducer.create(request),
+                SimpleResponseConsumer.create(),
                 new FutureCallback<SimpleHttpResponse>() {
 
                     @Override
                     public void completed(final SimpleHttpResponse response) {
-                        System.out.println(requestUri + "->" + response.getCode());
+                        System.out.println(request + "->" + new StatusLine(response));
                         System.out.println(response.getBody());
                     }
 
                     @Override
                     public void failed(final Exception ex) {
-                        System.out.println(requestUri + "->" + ex);
+                        System.out.println(request + "->" + ex);
                     }
 
                     @Override
                     public void cancelled() {
-                        System.out.println(requestUri + " cancelled");
+                        System.out.println(request + " cancelled");
                     }
 
                 });
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientConnectionEviction.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientConnectionEviction.java
index 6cae7ef..503525b 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientConnectionEviction.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientConnectionEviction.java
@@ -30,14 +30,15 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
 import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
 import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
 import org.apache.hc.core5.concurrent.FutureCallback;
 import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.io.CloseMode;
 import org.apache.hc.core5.reactor.IOReactorConfig;
 import org.apache.hc.core5.util.TimeValue;
@@ -63,9 +64,12 @@ public class AsyncClientConnectionEviction {
 
         client.start();
 
-        final HttpHost target = new HttpHost("httpbin.org");
+        final SimpleHttpRequest request = SimpleRequestBuilder.get()
+                .setHttpHost(new HttpHost("httpbin.org"))
+                .setPath("/")
+                .build();
 
-        final SimpleHttpRequest request = SimpleHttpRequests.get(target, "/");
+        System.out.println("Executing request " + request);
         final Future<SimpleHttpResponse> future1 = client.execute(
                 SimpleRequestProducer.create(request),
                 SimpleResponseConsumer.create(),
@@ -73,18 +77,18 @@ public class AsyncClientConnectionEviction {
 
                     @Override
                     public void completed(final SimpleHttpResponse response) {
-                        System.out.println(request.getRequestUri() + "->" + response.getCode());
+                        System.out.println(request + "->" + new StatusLine(response));
                         System.out.println(response.getBody());
                     }
 
                     @Override
                     public void failed(final Exception ex) {
-                        System.out.println(request.getRequestUri() + "->" + ex);
+                        System.out.println(request + "->" + ex);
                     }
 
                     @Override
                     public void cancelled() {
-                        System.out.println(request.getRequestUri() + " cancelled");
+                        System.out.println(request + " cancelled");
                     }
 
                 });
@@ -96,24 +100,23 @@ public class AsyncClientConnectionEviction {
         // Previous connection should get evicted from the pool by now
 
         final Future<SimpleHttpResponse> future2 = client.execute(
-                SimpleRequestProducer.create(request),
-                SimpleResponseConsumer.create(),
+                request,
                 new FutureCallback<SimpleHttpResponse>() {
 
                     @Override
                     public void completed(final SimpleHttpResponse response) {
-                        System.out.println(request.getRequestUri() + "->" + response.getCode());
+                        System.out.println(request + "->" + new StatusLine(response));
                         System.out.println(response.getBody());
                     }
 
                     @Override
                     public void failed(final Exception ex) {
-                        System.out.println(request.getRequestUri() + "->" + ex);
+                        System.out.println(request + "->" + ex);
                     }
 
                     @Override
                     public void cancelled() {
-                        System.out.println(request.getRequestUri() + " cancelled");
+                        System.out.println(request + " cancelled");
                     }
 
                 });
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientCustomSSL.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientCustomSSL.java
index 4cc86aa..08128cc 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientCustomSSL.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientCustomSSL.java
@@ -34,8 +34,8 @@ import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLSession;
 
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
 import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
@@ -46,6 +46,7 @@ import org.apache.hc.client5.http.protocol.HttpClientContext;
 import org.apache.hc.client5.http.ssl.ClientTlsStrategyBuilder;
 import org.apache.hc.core5.concurrent.FutureCallback;
 import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.http.nio.ssl.TlsStrategy;
 import org.apache.hc.core5.io.CloseMode;
 import org.apache.hc.core5.ssl.SSLContexts;
@@ -97,11 +98,15 @@ public class AsyncClientCustomSSL {
 
             client.start();
 
-            final HttpHost target = new HttpHost("https", "httpbin.org", 443);
-            final String requestUri = "/";
+            final HttpHost target = new HttpHost("https", "httpbin.org");
             final HttpClientContext clientContext = HttpClientContext.create();
 
-            final SimpleHttpRequest request = SimpleHttpRequests.get(target, requestUri);
+            final SimpleHttpRequest request = SimpleRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath("/")
+                    .build();
+
+            System.out.println("Executing request " + request);
             final Future<SimpleHttpResponse> future = client.execute(
                     SimpleRequestProducer.create(request),
                     SimpleResponseConsumer.create(),
@@ -110,23 +115,23 @@ public class AsyncClientCustomSSL {
 
                         @Override
                         public void completed(final SimpleHttpResponse response) {
-                            System.out.println(requestUri + "->" + response.getCode());
-                            System.out.println(response.getBody());
+                            System.out.println(request + "->" + new StatusLine(response));
                             final SSLSession sslSession = clientContext.getSSLSession();
                             if (sslSession != null) {
                                 System.out.println("SSL protocol " + sslSession.getProtocol());
                                 System.out.println("SSL cipher suite " + sslSession.getCipherSuite());
                             }
+                            System.out.println(response.getBody());
                         }
 
                         @Override
                         public void failed(final Exception ex) {
-                            System.out.println(requestUri + "->" + ex);
+                            System.out.println(request + "->" + ex);
                         }
 
                         @Override
                         public void cancelled() {
-                            System.out.println(requestUri + " cancelled");
+                            System.out.println(request + " cancelled");
                         }
 
                     });
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientFullDuplexExchange.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientFullDuplexExchange.java
index 53f869e..a396ca3 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientFullDuplexExchange.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientFullDuplexExchange.java
@@ -27,7 +27,6 @@
 package org.apache.hc.client5.http.examples;
 
 import java.io.IOException;
-import java.net.URI;
 import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
@@ -41,6 +40,8 @@ import org.apache.hc.core5.http.Header;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.config.Http1Config;
+import org.apache.hc.core5.http.message.BasicHttpRequest;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.http.nio.AsyncClientExchangeHandler;
 import org.apache.hc.core5.http.nio.CapacityChannel;
 import org.apache.hc.core5.http.nio.DataStreamChannel;
@@ -50,6 +51,7 @@ import org.apache.hc.core5.http.nio.entity.StringAsyncEntityConsumer;
 import org.apache.hc.core5.http.nio.support.BasicRequestProducer;
 import org.apache.hc.core5.http.nio.support.BasicResponseConsumer;
 import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.support.BasicRequestBuilder;
 import org.apache.hc.core5.http2.HttpVersionPolicy;
 import org.apache.hc.core5.http2.config.H2Config;
 import org.apache.hc.core5.io.CloseMode;
@@ -75,12 +77,13 @@ public class AsyncClientFullDuplexExchange {
 
         client.start();
 
-        final URI requestUri = new URI("http://httpbin.org/post");
-        final BasicRequestProducer requestProducer = new BasicRequestProducer(
-                "POST", requestUri, new BasicAsyncEntityProducer("stuff", ContentType.TEXT_PLAIN));
+        final BasicHttpRequest request = BasicRequestBuilder.post("http://httpbin.org/post").build();
+        final BasicRequestProducer requestProducer = new BasicRequestProducer(request,
+                new BasicAsyncEntityProducer("stuff", ContentType.TEXT_PLAIN));
         final BasicResponseConsumer<String> responseConsumer = new BasicResponseConsumer<>(
                 new StringAsyncEntityConsumer());
 
+        System.out.println("Executing request " + request);
         final CountDownLatch latch = new CountDownLatch(1);
         client.execute(new AsyncClientExchangeHandler() {
 
@@ -93,12 +96,12 @@ public class AsyncClientFullDuplexExchange {
 
             @Override
             public void cancel() {
-                System.out.println(requestUri + " cancelled");
+                System.out.println(request + " cancelled");
             }
 
             @Override
             public void failed(final Exception cause) {
-                System.out.println(requestUri + "->" + cause);
+                System.out.println(request + "->" + cause);
             }
 
             @Override
@@ -120,7 +123,7 @@ public class AsyncClientFullDuplexExchange {
             public void consumeInformation(
                     final HttpResponse response,
                     final HttpContext context) throws HttpException, IOException {
-                System.out.println(requestUri + "->" + response.getCode());
+                System.out.println(request + "->" + new StatusLine(response));
             }
 
             @Override
@@ -128,7 +131,7 @@ public class AsyncClientFullDuplexExchange {
                     final HttpResponse response,
                     final EntityDetails entityDetails,
                     final HttpContext context) throws HttpException, IOException {
-                System.out.println(requestUri + "->" + response.getCode());
+                System.out.println(request + "->" + new StatusLine(response));
                 responseConsumer.consumeResponse(response, entityDetails, context, null);
             }
 
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2FullDuplexExchange.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2FullDuplexExchange.java
index 4a7727e..aa90bb2 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2FullDuplexExchange.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2FullDuplexExchange.java
@@ -27,7 +27,6 @@
 package org.apache.hc.client5.http.examples;
 
 import java.io.IOException;
-import java.net.URI;
 import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
@@ -40,6 +39,8 @@ import org.apache.hc.core5.http.EntityDetails;
 import org.apache.hc.core5.http.Header;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.message.BasicHttpRequest;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.http.nio.AsyncClientExchangeHandler;
 import org.apache.hc.core5.http.nio.CapacityChannel;
 import org.apache.hc.core5.http.nio.DataStreamChannel;
@@ -49,6 +50,7 @@ import org.apache.hc.core5.http.nio.entity.StringAsyncEntityConsumer;
 import org.apache.hc.core5.http.nio.support.BasicRequestProducer;
 import org.apache.hc.core5.http.nio.support.BasicResponseConsumer;
 import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.support.BasicRequestBuilder;
 import org.apache.hc.core5.http2.HttpVersionPolicy;
 import org.apache.hc.core5.http2.config.H2Config;
 import org.apache.hc.core5.io.CloseMode;
@@ -71,12 +73,13 @@ public class AsyncClientH2FullDuplexExchange {
 
         client.start();
 
-        final URI requestUri = new URI("http://nghttp2.org/httpbin/post");
-        final BasicRequestProducer requestProducer = new BasicRequestProducer(
-                "POST", requestUri, new BasicAsyncEntityProducer("stuff", ContentType.TEXT_PLAIN));
+        final BasicHttpRequest request = BasicRequestBuilder.post("https://nghttp2.org/httpbin/post").build();
+        final BasicRequestProducer requestProducer = new BasicRequestProducer(request,
+                new BasicAsyncEntityProducer("stuff", ContentType.TEXT_PLAIN));
         final BasicResponseConsumer<String> responseConsumer = new BasicResponseConsumer<>(
                 new StringAsyncEntityConsumer());
 
+        System.out.println("Executing request " + request);
         final CountDownLatch latch = new CountDownLatch(1);
         client.execute(new AsyncClientExchangeHandler() {
 
@@ -89,12 +92,12 @@ public class AsyncClientH2FullDuplexExchange {
 
             @Override
             public void cancel() {
-                System.out.println(requestUri + " cancelled");
+                System.out.println(request + " cancelled");
             }
 
             @Override
             public void failed(final Exception cause) {
-                System.out.println(requestUri + "->" + cause);
+                System.out.println(request + "->" + cause);
             }
 
             @Override
@@ -116,7 +119,7 @@ public class AsyncClientH2FullDuplexExchange {
             public void consumeInformation(
                     final HttpResponse response,
                     final HttpContext context) throws HttpException, IOException {
-                System.out.println(requestUri + "->" + response.getCode());
+                System.out.println(request + "->" + new StatusLine(response));
             }
 
             @Override
@@ -124,7 +127,7 @@ public class AsyncClientH2FullDuplexExchange {
                     final HttpResponse response,
                     final EntityDetails entityDetails,
                     final HttpContext context) throws HttpException, IOException {
-                System.out.println(requestUri + "->" + response.getCode());
+                System.out.println(request + "->" + new StatusLine(response));
                 responseConsumer.consumeResponse(response, entityDetails, context, null);
             }
 
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2Multiplexing.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2Multiplexing.java
index ef3cc57..9a4077f 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2Multiplexing.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2Multiplexing.java
@@ -31,14 +31,15 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
 import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer;
 import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
 import org.apache.hc.client5.http.impl.async.MinimalHttpAsyncClient;
 import org.apache.hc.core5.concurrent.FutureCallback;
 import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.http.nio.AsyncClientEndpoint;
 import org.apache.hc.core5.http2.HttpVersionPolicy;
 import org.apache.hc.core5.http2.config.H2Config;
@@ -63,7 +64,7 @@ public class AsyncClientH2Multiplexing {
 
         client.start();
 
-        final HttpHost target = new HttpHost("nghttp2.org");
+        final HttpHost target = new HttpHost("https", "nghttp2.org");
         final Future<AsyncClientEndpoint> leaseFuture = client.lease(target, null);
         final AsyncClientEndpoint endpoint = leaseFuture.get(30, TimeUnit.SECONDS);
         try {
@@ -71,7 +72,12 @@ public class AsyncClientH2Multiplexing {
 
             final CountDownLatch latch = new CountDownLatch(requestUris.length);
             for (final String requestUri: requestUris) {
-                final SimpleHttpRequest request = SimpleHttpRequests.get(target, requestUri);
+                final SimpleHttpRequest request = SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath(requestUri)
+                        .build();
+
+                System.out.println("Executing request " + request);
                 endpoint.execute(
                         SimpleRequestProducer.create(request),
                         SimpleResponseConsumer.create(),
@@ -80,20 +86,20 @@ public class AsyncClientH2Multiplexing {
                             @Override
                             public void completed(final SimpleHttpResponse response) {
                                 latch.countDown();
-                                System.out.println(requestUri + "->" + response.getCode());
+                                System.out.println(request + "->" + new StatusLine(response));
                                 System.out.println(response.getBody());
                             }
 
                             @Override
                             public void failed(final Exception ex) {
                                 latch.countDown();
-                                System.out.println(requestUri + "->" + ex);
+                                System.out.println(request + "->" + ex);
                             }
 
                             @Override
                             public void cancelled() {
                                 latch.countDown();
-                                System.out.println(requestUri + " cancelled");
+                                System.out.println(request + " cancelled");
                             }
 
                         });
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2ServerPush.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2ServerPush.java
index 144329e..7e3af51 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2ServerPush.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientH2ServerPush.java
@@ -38,13 +38,13 @@ import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
 import org.apache.hc.core5.function.Supplier;
 import org.apache.hc.core5.http.ContentType;
 import org.apache.hc.core5.http.HttpException;
-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.Method;
+import org.apache.hc.core5.http.message.BasicHttpRequest;
 import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.http.nio.AsyncPushConsumer;
 import org.apache.hc.core5.http.nio.support.BasicRequestProducer;
+import org.apache.hc.core5.http.support.BasicRequestBuilder;
 import org.apache.hc.core5.http2.HttpVersionPolicy;
 import org.apache.hc.core5.http2.config.H2Config;
 import org.apache.hc.core5.io.CloseMode;
@@ -115,17 +115,18 @@ public class AsyncClientH2ServerPush {
 
         });
 
-        final HttpHost target = new HttpHost("nghttp2.org");
-        final String requestURI = "/httpbin/";
+        final BasicHttpRequest request = BasicRequestBuilder.get("https://nghttp2.org/httpbin/").build();
+
+        System.out.println("Executing request " + request);
         final Future<Void> future = client.execute(
-                new BasicRequestProducer(Method.GET, target, requestURI),
+                new BasicRequestProducer(request, null),
                 new AbstractCharResponseConsumer<Void>() {
 
                     @Override
                     protected void start(
                             final HttpResponse response,
                             final ContentType contentType) throws HttpException, IOException {
-                        System.out.println(requestURI + "->" + new StatusLine(response));
+                        System.out.println(request + "->" + new StatusLine(response));
                     }
 
                     @Override
@@ -144,7 +145,7 @@ public class AsyncClientH2ServerPush {
 
                     @Override
                     public void failed(final Exception cause) {
-                        System.out.println(requestURI + "->" + cause);
+                        System.out.println(request + "->" + cause);
                     }
 
                     @Override
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttp1Pipelining.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttp1Pipelining.java
index 354f055..548c4ed 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttp1Pipelining.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttp1Pipelining.java
@@ -31,8 +31,8 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
 import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer;
 import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
@@ -40,6 +40,7 @@ import org.apache.hc.client5.http.impl.async.MinimalHttpAsyncClient;
 import org.apache.hc.core5.concurrent.FutureCallback;
 import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.config.Http1Config;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.http.nio.AsyncClientEndpoint;
 import org.apache.hc.core5.http2.HttpVersionPolicy;
 import org.apache.hc.core5.io.CloseMode;
@@ -70,7 +71,12 @@ public class AsyncClientHttp1Pipelining {
 
             final CountDownLatch latch = new CountDownLatch(requestUris.length);
             for (final String requestUri: requestUris) {
-                final SimpleHttpRequest request = SimpleHttpRequests.get(target, requestUri);
+                final SimpleHttpRequest request = SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath(requestUri)
+                        .build();
+
+                System.out.println("Executing request " + request);
                 endpoint.execute(
                         SimpleRequestProducer.create(request),
                         SimpleResponseConsumer.create(),
@@ -79,20 +85,20 @@ public class AsyncClientHttp1Pipelining {
                             @Override
                             public void completed(final SimpleHttpResponse response) {
                                 latch.countDown();
-                                System.out.println(requestUri + "->" + response.getCode());
+                                System.out.println(request + "->" + new StatusLine(response));
                                 System.out.println(response.getBody());
                             }
 
                             @Override
                             public void failed(final Exception ex) {
                                 latch.countDown();
-                                System.out.println(requestUri + "->" + ex);
+                                System.out.println(request + "->" + ex);
                             }
 
                             @Override
                             public void cancelled() {
                                 latch.countDown();
-                                System.out.println(requestUri + " cancelled");
+                                System.out.println(request + " cancelled");
                             }
 
                         });
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttpExchange.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttpExchange.java
index 0d5ee90..610ebfd 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttpExchange.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttpExchange.java
@@ -29,12 +29,15 @@ package org.apache.hc.client5.http.examples;
 import java.util.concurrent.Future;
 
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
+import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
+import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
 import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
 import org.apache.hc.core5.concurrent.FutureCallback;
 import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.io.CloseMode;
 import org.apache.hc.core5.reactor.IOReactorConfig;
 import org.apache.hc.core5.util.Timeout;
@@ -60,26 +63,31 @@ public class AsyncClientHttpExchange {
         final String[] requestUris = new String[] {"/", "/ip", "/user-agent", "/headers"};
 
         for (final String requestUri: requestUris) {
-            final SimpleHttpRequest httpget = SimpleHttpRequests.get(target, requestUri);
-            System.out.println("Executing request " + httpget.getMethod() + " " + httpget.getUri());
+            final SimpleHttpRequest request = SimpleRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath(requestUri)
+                    .build();
+
+            System.out.println("Executing request " + request);
             final Future<SimpleHttpResponse> future = client.execute(
-                    httpget,
+                    SimpleRequestProducer.create(request),
+                    SimpleResponseConsumer.create(),
                     new FutureCallback<SimpleHttpResponse>() {
 
                         @Override
                         public void completed(final SimpleHttpResponse response) {
-                            System.out.println(requestUri + "->" + response.getCode());
+                            System.out.println(request + "->" + new StatusLine(response));
                             System.out.println(response.getBody());
                         }
 
                         @Override
                         public void failed(final Exception ex) {
-                            System.out.println(requestUri + "->" + ex);
+                            System.out.println(request + "->" + ex);
                         }
 
                         @Override
                         public void cancelled() {
-                            System.out.println(requestUri + " cancelled");
+                            System.out.println(request + " cancelled");
                         }
 
                     });
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttpExchangeStreaming.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttpExchangeStreaming.java
index c543bf9..28aaa8f 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttpExchangeStreaming.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttpExchangeStreaming.java
@@ -37,9 +37,10 @@ import org.apache.hc.core5.http.ContentType;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpResponse;
-import org.apache.hc.core5.http.Method;
+import org.apache.hc.core5.http.message.BasicHttpRequest;
 import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.http.nio.support.BasicRequestProducer;
+import org.apache.hc.core5.http.support.BasicRequestBuilder;
 import org.apache.hc.core5.io.CloseMode;
 import org.apache.hc.core5.reactor.IOReactorConfig;
 import org.apache.hc.core5.util.Timeout;
@@ -65,15 +66,22 @@ public class AsyncClientHttpExchangeStreaming {
         final String[] requestUris = new String[] {"/", "/ip", "/user-agent", "/headers"};
 
         for (final String requestUri: requestUris) {
+
+            final BasicHttpRequest request = BasicRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath(requestUri)
+                    .build();
+
+            System.out.println("Executing request " + request);
             final Future<Void> future = client.execute(
-                    new BasicRequestProducer(Method.GET, target, requestUri),
+                    new BasicRequestProducer(request, null),
                     new AbstractCharResponseConsumer<Void>() {
 
                         @Override
                         protected void start(
                                 final HttpResponse response,
                                 final ContentType contentType) throws HttpException, IOException {
-                            System.out.println(requestUri + "->" + new StatusLine(response));
+                            System.out.println(request + "->" + new StatusLine(response));
                         }
 
                         @Override
@@ -98,7 +106,7 @@ public class AsyncClientHttpExchangeStreaming {
 
                         @Override
                         public void failed(final Exception cause) {
-                            System.out.println(requestUri + "->" + cause);
+                            System.out.println(request + "->" + cause);
                         }
 
                         @Override
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientInterceptors.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientInterceptors.java
index d7d4662..70d2344 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientInterceptors.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientInterceptors.java
@@ -37,8 +37,8 @@ import org.apache.hc.client5.http.async.AsyncExecCallback;
 import org.apache.hc.client5.http.async.AsyncExecChain;
 import org.apache.hc.client5.http.async.AsyncExecChainHandler;
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.impl.ChainElement;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
 import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
@@ -53,6 +53,7 @@ import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.impl.BasicEntityDetails;
 import org.apache.hc.core5.http.message.BasicHttpResponse;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.http.nio.AsyncDataConsumer;
 import org.apache.hc.core5.http.nio.AsyncEntityProducer;
 import org.apache.hc.core5.http.protocol.HttpContext;
@@ -123,26 +124,26 @@ public class AsyncClientInterceptors {
 
         final String requestUri = "http://httpbin.org/get";
         for (int i = 0; i < 20; i++) {
-            final SimpleHttpRequest httpget = SimpleHttpRequests.get(requestUri);
-            System.out.println("Executing request " + httpget.getMethod() + " " + httpget.getUri());
+            final SimpleHttpRequest request = SimpleRequestBuilder.get(requestUri).build();
+            System.out.println("Executing request " + request);
             final Future<SimpleHttpResponse> future = client.execute(
-                    httpget,
+                    request,
                     new FutureCallback<SimpleHttpResponse>() {
 
                         @Override
                         public void completed(final SimpleHttpResponse response) {
-                            System.out.println(requestUri + "->" + response.getCode());
+                            System.out.println(request + "->" + new StatusLine(response));
                             System.out.println(response.getBody());
                         }
 
                         @Override
                         public void failed(final Exception ex) {
-                            System.out.println(requestUri + "->" + ex);
+                            System.out.println(request + "->" + ex);
                         }
 
                         @Override
                         public void cancelled() {
-                            System.out.println(requestUri + " cancelled");
+                            System.out.println(request + " cancelled");
                         }
 
                     });
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientMessageTrailers.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientMessageTrailers.java
index bbf247a..da832a3 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientMessageTrailers.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientMessageTrailers.java
@@ -33,7 +33,10 @@ import java.util.concurrent.Future;
 import org.apache.hc.client5.http.async.AsyncExecCallback;
 import org.apache.hc.client5.http.async.AsyncExecChain;
 import org.apache.hc.client5.http.async.AsyncExecChainHandler;
+import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
+import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
 import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer;
 import org.apache.hc.client5.http.impl.ChainElement;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
@@ -42,11 +45,9 @@ import org.apache.hc.core5.concurrent.FutureCallback;
 import org.apache.hc.core5.http.ContentType;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.http.nio.AsyncEntityProducer;
-import org.apache.hc.core5.http.nio.AsyncRequestProducer;
 import org.apache.hc.core5.http.nio.entity.DigestingEntityProducer;
-import org.apache.hc.core5.http.nio.entity.StringAsyncEntityProducer;
-import org.apache.hc.core5.http.nio.support.AsyncRequestBuilder;
 import org.apache.hc.core5.io.CloseMode;
 import org.apache.hc.core5.reactor.IOReactorConfig;
 import org.apache.hc.core5.util.Timeout;
@@ -87,29 +88,30 @@ public class AsyncClientMessageTrailers {
 
         client.start();
 
-        final String requestUri = "http://httpbin.org/post";
-        final AsyncRequestProducer requestProducer = AsyncRequestBuilder.post(requestUri)
-                .setEntity(new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN))
+        final SimpleHttpRequest request = SimpleRequestBuilder.post("http://httpbin.org/post")
+                .setBody("some stuff", ContentType.TEXT_PLAIN)
                 .build();
+
+        System.out.println("Executing request " + request);
         final Future<SimpleHttpResponse> future = client.execute(
-                requestProducer,
+                SimpleRequestProducer.create(request),
                 SimpleResponseConsumer.create(),
                 new FutureCallback<SimpleHttpResponse>() {
 
                     @Override
                     public void completed(final SimpleHttpResponse response) {
-                        System.out.println(requestUri + "->" + response.getCode());
+                        System.out.println(request + "->" + new StatusLine(response));
                         System.out.println(response.getBody());
                     }
 
                     @Override
                     public void failed(final Exception ex) {
-                        System.out.println(requestUri + "->" + ex);
+                        System.out.println(request + "->" + ex);
                     }
 
                     @Override
                     public void cancelled() {
-                        System.out.println(requestUri + " cancelled");
+                        System.out.println(request + " cancelled");
                     }
 
                 });
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientTlsAlpn.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientTlsAlpn.java
index 632c442..22c1e37 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientTlsAlpn.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientTlsAlpn.java
@@ -31,8 +31,8 @@ import java.util.concurrent.Future;
 import javax.net.ssl.SSLSession;
 
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
 import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
@@ -43,6 +43,7 @@ import org.apache.hc.client5.http.protocol.HttpClientContext;
 import org.apache.hc.client5.http.ssl.ClientTlsStrategyBuilder;
 import org.apache.hc.core5.concurrent.FutureCallback;
 import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.message.StatusLine;
 import org.apache.hc.core5.http.nio.ssl.TlsStrategy;
 import org.apache.hc.core5.http2.HttpVersionPolicy;
 import org.apache.hc.core5.io.CloseMode;
@@ -79,11 +80,15 @@ public class AsyncClientTlsAlpn {
 
             client.start();
 
-            final HttpHost target = new HttpHost("https", "nghttp2.org", 443);
-            final String requestUri = "/httpbin/";
+            final HttpHost target = new HttpHost("https", "nghttp2.org");
             final HttpClientContext clientContext = HttpClientContext.create();
 
-            final SimpleHttpRequest request = SimpleHttpRequests.get(target, requestUri);
+            final SimpleHttpRequest request = SimpleRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath("/httpbin/")
+                    .build();
+
+            System.out.println("Executing request " + request);
             final Future<SimpleHttpResponse> future = client.execute(
                     SimpleRequestProducer.create(request),
                     SimpleResponseConsumer.create(),
@@ -92,23 +97,23 @@ public class AsyncClientTlsAlpn {
 
                         @Override
                         public void completed(final SimpleHttpResponse response) {
-                            System.out.println(requestUri + "->" + response.getCode());
-                            System.out.println(response.getBody());
+                            System.out.println(request + "->" + new StatusLine(response));
                             final SSLSession sslSession = clientContext.getSSLSession();
                             if (sslSession != null) {
                                 System.out.println("SSL protocol " + sslSession.getProtocol());
                                 System.out.println("SSL cipher suite " + sslSession.getCipherSuite());
                             }
+                            System.out.println(response.getBody());
                         }
 
                         @Override
                         public void failed(final Exception ex) {
-                            System.out.println(requestUri + "->" + ex);
+                            System.out.println(request + "->" + ex);
                         }
 
                         @Override
                         public void cancelled() {
-                            System.out.println(requestUri + " cancelled");
+                            System.out.println(request + " cancelled");
                         }
 
                     });


[httpcomponents-client] 02/03: Better javadocs for simple message classes

Posted by ol...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

olegk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git

commit e0c19c0b539b332ee3fe73e871463c6e19f9e16f
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Sun Mar 14 20:37:08 2021 +0100

    Better javadocs for simple message classes
---
 .../apache/hc/client5/http/async/methods/SimpleHttpRequest.java   | 7 +++++++
 .../apache/hc/client5/http/async/methods/SimpleHttpResponse.java  | 7 +++++++
 .../hc/client5/http/async/methods/SimpleRequestProducer.java      | 8 ++++++++
 .../hc/client5/http/async/methods/SimpleResponseConsumer.java     | 8 ++++++++
 4 files changed, 30 insertions(+)

diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpRequest.java b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpRequest.java
index 7ce1cc6..61d3a9f 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpRequest.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpRequest.java
@@ -40,10 +40,17 @@ import org.apache.hc.core5.util.Args;
 
 /**
  * HTTP request that can enclose a body represented as a simple text string or an array of bytes.
+ * <p>
+ * IMPORTANT: {@link SimpleHttpRequest}s are intended for simple scenarios where entities inclosed
+ * in requests are known to be small. It is generally recommended to use
+ * {@link org.apache.hc.core5.http.nio.support.AsyncRequestBuilder} and streaming
+ * {@link org.apache.hc.core5.http.nio.AsyncEntityProducer}s.
  *
  * @since 5.0
  *
  * @see SimpleBody
+ * @see org.apache.hc.core5.http.nio.support.AsyncRequestBuilder
+ * @see org.apache.hc.core5.http.nio.AsyncEntityProducer
  */
 public final class SimpleHttpRequest extends ConfigurableHttpRequest {
 
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpResponse.java b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpResponse.java
index bad41df..78416a9 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpResponse.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpResponse.java
@@ -37,10 +37,17 @@ import org.apache.hc.core5.util.Args;
 
 /**
  * HTTP response that can enclose a body represented as a simple text string or an array of bytes.
+ * <p>
+ * IMPORTANT: {@link SimpleHttpResponse}s are intended for simple scenarios where entities inclosed
+ * in responses are known to be small. It is generally recommended to use streaming
+ * {@link org.apache.hc.core5.http.nio.AsyncResponseConsumer}s, for instance, such as based on
+ * {@link AbstractCharResponseConsumer} or {@link AbstractBinResponseConsumer}.
  *
  * @since 5.0
  *
  * @see SimpleBody
+ * @see AbstractCharResponseConsumer
+ * @see AbstractBinResponseConsumer
  */
 public final class SimpleHttpResponse extends BasicHttpResponse {
 
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleRequestProducer.java b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleRequestProducer.java
index d6e78a5..b084e8b 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleRequestProducer.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleRequestProducer.java
@@ -35,10 +35,18 @@ import org.apache.hc.core5.util.Args;
 /**
  * HTTP request producer that generates message data stream events based
  * on content of a {@link SimpleHttpRequest} instance.
+ * <p>
+ * IMPORTANT: {@link SimpleHttpRequest}s are intended for simple scenarios where entities inclosed
+ * in requests are known to be small. It is generally recommended to use
+ * {@link org.apache.hc.core5.http.nio.support.AsyncRequestBuilder} and streaming
+ * {@link org.apache.hc.core5.http.nio.AsyncEntityProducer}s.
  *
  * @since 5.0
  *
  * @see SimpleBody
+ * @see SimpleHttpRequest
+ * @see org.apache.hc.core5.http.nio.support.AsyncRequestBuilder
+ * @see org.apache.hc.core5.http.nio.AsyncEntityProducer
  */
 public final class SimpleRequestProducer extends BasicRequestProducer {
 
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleResponseConsumer.java b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleResponseConsumer.java
index 75b73fb..7f9dda6 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleResponseConsumer.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleResponseConsumer.java
@@ -38,10 +38,18 @@ import org.apache.hc.core5.http.protocol.HttpContext;
 /**
  * HTTP response consumer that generates a {@link SimpleHttpResponse} instance based on events
  * of an incoming data stream.
+ * <p>
+ * IMPORTANT: {@link SimpleHttpResponse}s are intended for simple scenarios where entities inclosed
+ * in responses are known to be small. It is generally recommended to use streaming
+ * {@link org.apache.hc.core5.http.nio.AsyncResponseConsumer}s, for instance, such as based on
+ * {@link AbstractCharResponseConsumer} or {@link AbstractBinResponseConsumer}.
  *
  * @since 5.0
  *
  * @see SimpleBody
+ * @see SimpleHttpResponse
+ * @see AbstractCharResponseConsumer
+ * @see AbstractBinResponseConsumer
  */
 public final class SimpleResponseConsumer extends AbstractAsyncResponseConsumer<SimpleHttpResponse, byte[]> {
 


[httpcomponents-client] 03/03: Deprecated request factory classes in favor of request builders

Posted by ol...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

olegk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git

commit 2404540f1f1963ab20c1edb06c2fc64ee377532c
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Sun Mar 14 22:06:55 2021 +0100

    Deprecated request factory classes in favor of request builders
---
 .../org/apache/hc/client5/http/fluent/Request.java |  34 +++----
 .../apache/hc/client5/http/fluent/TestRequest.java |  64 ++++++++----
 .../AbstractHttpAsyncClientAuthentication.java     |  89 ++++++++++++-----
 .../async/AbstractHttpAsyncFundamentalsTest.java   |  29 ++++--
 .../async/AbstractHttpAsyncRedirectsTest.java      | 109 +++++++++++++++------
 .../hc/client5/testing/async/TestHttp1Async.java   |  27 +++--
 .../testing/async/TestHttp1AsyncRedirects.java     |  20 ++--
 .../TestHttp1AsyncStatefulConnManagement.java      |  31 ++++--
 .../async/TestHttp1ClientAuthentication.java       |   9 +-
 .../client5/testing/async/TestHttp1Reactive.java   |   7 +-
 .../CachingHttpAsyncClientCompatibilityTest.java   |  27 +++--
 .../external/HttpAsyncClientCompatibilityTest.java |  32 ++++--
 .../http/async/methods/BasicHttpRequests.java      |   3 +
 .../http/async/methods/SimpleHttpRequests.java     |   3 +
 .../http/classic/methods/ClassicHttpRequests.java  |   3 +
 .../async/methods/SimpleBasicHttpRequests.java     |  91 -----------------
 .../http/async/methods/TestBasicHttpRequests.java  |  92 -----------------
 .../classic/methods/TestClassicHttpRequests.java   |  96 ------------------
 18 files changed, 354 insertions(+), 412 deletions(-)

diff --git a/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Request.java b/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Request.java
index 492adb7..064943b 100644
--- a/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Request.java
+++ b/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Request.java
@@ -41,7 +41,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.TimeZone;
 
-import org.apache.hc.client5.http.classic.methods.ClassicHttpRequests;
 import org.apache.hc.client5.http.classic.methods.HttpUriRequestBase;
 import org.apache.hc.client5.http.config.Configurable;
 import org.apache.hc.client5.http.config.RequestConfig;
@@ -60,6 +59,7 @@ import org.apache.hc.core5.http.NameValuePair;
 import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
 import org.apache.hc.core5.http.io.entity.FileEntity;
 import org.apache.hc.core5.http.io.entity.InputStreamEntity;
+import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
 import org.apache.hc.core5.net.WWWFormCodec;
 import org.apache.hc.core5.util.Timeout;
 
@@ -95,67 +95,67 @@ public class Request {
   }
 
     public static Request get(final URI uri) {
-       return new Request(ClassicHttpRequests.get(uri));
+       return new Request(new BasicClassicHttpRequest(Method.GET, uri));
     }
 
     public static Request get(final String uri) {
-        return new Request(ClassicHttpRequests.get(uri));
+        return new Request(new BasicClassicHttpRequest(Method.GET, uri));
     }
 
     public static Request head(final URI uri) {
-        return new Request(ClassicHttpRequests.head(uri));
+        return new Request(new BasicClassicHttpRequest(Method.HEAD, uri));
     }
 
     public static Request head(final String uri) {
-        return new Request(ClassicHttpRequests.head(uri));
+        return new Request(new BasicClassicHttpRequest(Method.HEAD, uri));
     }
 
     public static Request post(final URI uri) {
-        return new Request(ClassicHttpRequests.post(uri));
+        return new Request(new BasicClassicHttpRequest(Method.POST, uri));
     }
 
     public static Request post(final String uri) {
-      return new Request(ClassicHttpRequests.post(uri));
+      return new Request(new BasicClassicHttpRequest(Method.POST, uri));
     }
 
     public static Request patch(final URI uri) {
-      return new Request(ClassicHttpRequests.patch(uri));
+      return new Request(new BasicClassicHttpRequest(Method.PATCH, uri));
     }
 
     public static Request patch(final String uri) {
-      return new Request(ClassicHttpRequests.patch(uri));
+      return new Request(new BasicClassicHttpRequest(Method.PATCH, uri));
     }
 
     public static Request put(final URI uri) {
-      return new Request(ClassicHttpRequests.put(uri));
+      return new Request(new BasicClassicHttpRequest(Method.PUT, uri));
     }
 
     public static Request put(final String uri) {
-      return new Request(ClassicHttpRequests.put(uri));
+      return new Request(new BasicClassicHttpRequest(Method.PUT, uri));
     }
 
     public static Request trace(final URI uri) {
-      return new Request(ClassicHttpRequests.trace(uri));
+      return new Request(new BasicClassicHttpRequest(Method.TRACE, uri));
     }
 
     public static Request trace(final String uri) {
-      return new Request(ClassicHttpRequests.trace(uri));
+      return new Request(new BasicClassicHttpRequest(Method.TRACE, uri));
     }
 
     public static Request delete(final URI uri) {
-      return new Request(ClassicHttpRequests.delete(uri));
+      return new Request(new BasicClassicHttpRequest(Method.DELETE, uri));
     }
 
     public static Request delete(final String uri) {
-      return new Request(ClassicHttpRequests.delete(uri));
+      return new Request(new BasicClassicHttpRequest(Method.DELETE, uri));
     }
 
     public static Request options(final URI uri) {
-      return new Request(ClassicHttpRequests.options(uri));
+      return new Request(new BasicClassicHttpRequest(Method.OPTIONS, uri));
     }
 
     public static Request options(final String uri) {
-      return new Request(ClassicHttpRequests.options(uri));
+      return new Request(new BasicClassicHttpRequest(Method.OPTIONS, uri));
     }
 
     Request(final ClassicHttpRequest request) {
diff --git a/httpclient5-fluent/src/test/java/org/apache/hc/client5/http/fluent/TestRequest.java b/httpclient5-fluent/src/test/java/org/apache/hc/client5/http/fluent/TestRequest.java
index 8c4a557..1377750 100644
--- a/httpclient5-fluent/src/test/java/org/apache/hc/client5/http/fluent/TestRequest.java
+++ b/httpclient5-fluent/src/test/java/org/apache/hc/client5/http/fluent/TestRequest.java
@@ -27,30 +27,60 @@
 
 package org.apache.hc.client5.http.fluent;
 
+import java.lang.reflect.Method;
 import java.net.URI;
+import java.util.Arrays;
 
-import org.apache.hc.client5.http.classic.methods.HttpGet;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.junit.Assert;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
+@RunWith(Parameterized.class)
 public class TestRequest {
 
-  private static final String URI_STRING_FIXTURE = "http://localhost";
-  private static final URI URI_FIXTURE = URI.create(URI_STRING_FIXTURE);
-
-  @Test
-  public void testGetFromString() {
-    final ClassicHttpRequest request = Request.get(URI_STRING_FIXTURE).getRequest();
-    Assert.assertEquals(HttpGet.class, request.getClass());
-    Assert.assertEquals("GET", request.getMethod());
-  }
-
-  @Test
-  public void testGetFromURI() {
-    final ClassicHttpRequest request = Request.get(URI_FIXTURE).getRequest();
-    Assert.assertEquals(HttpGet.class, request.getClass());
-    Assert.assertEquals("GET", request.getMethod());
-  }
+    private static final String URI_STRING_FIXTURE = "http://localhost";
+    private static final URI URI_FIXTURE = URI.create(URI_STRING_FIXTURE);
+
+    @Parameterized.Parameters(name = "{index}: {0} => {1}")
+    public static Iterable<Object[]> data() {
+        return Arrays.asList(new Object[][]{
+                // @formatter:off
+                {"delete", "DELETE"},
+                {"get", "GET"},
+                {"head", "HEAD"},
+                {"options", "OPTIONS"},
+                {"patch", "PATCH"},
+                {"post", "POST"},
+                {"put", "PUT"},
+                {"trace", "TRACE"}
+                // @formatter:on
+        });
+    }
+
+    private final String methodName;
+    private final String expectedMethod;
+
+    public TestRequest(final String methodName, final String expectedMethod) {
+        this.methodName = methodName;
+        this.expectedMethod = expectedMethod;
+    }
+
+    @Test
+    public void testCreateFromString() throws Exception {
+        final Method method = Request.class.getMethod(methodName, String.class);
+        final Request request = (Request) method.invoke(null, URI_STRING_FIXTURE);
+        final ClassicHttpRequest classicHttpRequest = request.getRequest();
+        Assert.assertEquals(expectedMethod, classicHttpRequest.getMethod());
+    }
+
+    @Test
+    public void testCreateFromURI() throws Exception {
+        final Method method = Request.class.getMethod(methodName, URI.class);
+        final Request request = (Request) method.invoke(null, URI_FIXTURE);
+        final ClassicHttpRequest classicHttpRequest = request.getRequest();
+        Assert.assertEquals(expectedMethod, classicHttpRequest.getMethod());
+    }
 
 }
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncClientAuthentication.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncClientAuthentication.java
index f8b4c5a..a8b4613 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncClientAuthentication.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncClientAuthentication.java
@@ -34,16 +34,16 @@ import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.hc.client5.http.AuthenticationStrategy;
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.auth.AuthChallenge;
 import org.apache.hc.client5.http.auth.AuthScheme;
 import org.apache.hc.client5.http.auth.AuthSchemeFactory;
-import org.apache.hc.client5.http.auth.StandardAuthScheme;
 import org.apache.hc.client5.http.auth.AuthScope;
 import org.apache.hc.client5.http.auth.ChallengeType;
 import org.apache.hc.client5.http.auth.Credentials;
 import org.apache.hc.client5.http.auth.CredentialsStore;
+import org.apache.hc.client5.http.auth.StandardAuthScheme;
 import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
 import org.apache.hc.client5.http.config.RequestConfig;
 import org.apache.hc.client5.http.impl.DefaultAuthenticationStrategy;
@@ -164,7 +164,10 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
         final HttpClientContext context = HttpClientContext.create();
         context.setCredentialsProvider(credsProvider);
 
-        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleHttpRequests.get(target, "/"), context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/")
+                        .build(), context, null);
         final HttpResponse response = future.get();
 
         Assert.assertNotNull(response);
@@ -191,7 +194,10 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
         final HttpClientContext context = HttpClientContext.create();
         context.setCredentialsProvider(credsProvider);
 
-        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleHttpRequests.get(target, "/"), context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/")
+                        .build(), context, null);
         final HttpResponse response = future.get();
 
         Assert.assertNotNull(response);
@@ -218,7 +224,11 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
         final HttpClientContext context = HttpClientContext.create();
         context.setCredentialsProvider(credsProvider);
 
-        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleHttpRequests.get(target, "/"), context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/")
+                        .build(), context, null);
         final HttpResponse response = future.get();
 
         Assert.assertNotNull(response);
@@ -244,10 +254,12 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
                 new UsernamePasswordCredentials("test", "test".toCharArray()));
         final HttpClientContext context = HttpClientContext.create();
         context.setCredentialsProvider(credsProvider);
-
-        final SimpleHttpRequest put = SimpleHttpRequests.put(target, "/");
-        put.setBody("Some important stuff", ContentType.TEXT_PLAIN);
-        final Future<SimpleHttpResponse> future = httpclient.execute(put, context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(
+                SimpleRequestBuilder.put()
+                        .setHttpHost(target)
+                        .setPath("/")
+                        .setBody("Some important stuff", ContentType.TEXT_PLAIN)
+                        .build(), context, null);
         final HttpResponse response = future.get();
 
         Assert.assertNotNull(response);
@@ -274,10 +286,12 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
         final HttpClientContext context = HttpClientContext.create();
         context.setCredentialsProvider(credsProvider);
         context.setRequestConfig(RequestConfig.custom().setExpectContinueEnabled(true).build());
-
-        final SimpleHttpRequest put = SimpleHttpRequests.put(target, "/");
-        put.setBody("Some important stuff", ContentType.TEXT_PLAIN);
-        final Future<SimpleHttpResponse> future = httpclient.execute(put, context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(
+                SimpleRequestBuilder.put()
+                        .setHttpHost(target)
+                        .setPath("/")
+                        .setBody("Some important stuff", ContentType.TEXT_PLAIN)
+                        .build(), context, null);
         final HttpResponse response = future.get();
 
         Assert.assertNotNull(response);
@@ -301,10 +315,12 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
         final HttpClientContext context = HttpClientContext.create();
         context.setCredentialsProvider(credsProvider);
         context.setRequestConfig(RequestConfig.custom().setExpectContinueEnabled(true).build());
-
-        final SimpleHttpRequest put = SimpleHttpRequests.put(target, "/");
-        put.setBody("Some important stuff", ContentType.TEXT_PLAIN);
-        final Future<SimpleHttpResponse> future = httpclient.execute(put, context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(
+                SimpleRequestBuilder.put()
+                        .setHttpHost(target)
+                        .setPath("/")
+                        .setBody("Some important stuff", ContentType.TEXT_PLAIN)
+                        .build(), context, null);
         final HttpResponse response = future.get();
 
         Assert.assertNotNull(response);
@@ -345,12 +361,18 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
         final HttpClientContext context = HttpClientContext.create();
         context.setCredentialsProvider(credsProvider);
 
-        final Future<SimpleHttpResponse> future1 = httpclient.execute(SimpleHttpRequests.get(target, "/"), context, null);
+        final Future<SimpleHttpResponse> future1 = httpclient.execute(SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/")
+                        .build(), context, null);
         final HttpResponse response1 = future1.get();
         Assert.assertNotNull(response1);
         Assert.assertEquals(HttpStatus.SC_OK, response1.getCode());
 
-        final Future<SimpleHttpResponse> future2 = httpclient.execute(SimpleHttpRequests.get(target, "/"), context, null);
+        final Future<SimpleHttpResponse> future2 = httpclient.execute(SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/")
+                        .build(), context, null);
         final HttpResponse response2 = future2.get();
         Assert.assertNotNull(response2);
         Assert.assertEquals(HttpStatus.SC_OK, response2.getCode());
@@ -372,7 +394,11 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
 
         final HttpClientContext context = HttpClientContext.create();
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target.getSchemeName() + "://test:test@" +  target.toHostString() + "/"), context, null);
+                SimpleRequestBuilder.get()
+                        .setScheme(target.getSchemeName())
+                        .setAuthority(new URIAuthority("test:test", target.getHostName(), target.getPort()))
+                        .setPath("/")
+                        .build(), context, null);
         final SimpleHttpResponse response = future.get();
 
         Assert.assertNotNull(response);
@@ -392,8 +418,11 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
         final HttpHost target = start();
 
         final HttpClientContext context = HttpClientContext.create();
-        final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target.getSchemeName() + "://test:all-worng@" +  target.toHostString() + "/"), context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleRequestBuilder.get()
+                        .setScheme(target.getSchemeName())
+                        .setAuthority(new URIAuthority("test:all-worng", target.getHostName(), target.getPort()))
+                        .setPath("/")
+                        .build(), context, null);
         final SimpleHttpResponse response = future.get();
 
         Assert.assertNotNull(response);
@@ -431,7 +460,11 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
 
         final HttpClientContext context = HttpClientContext.create();
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target.getSchemeName() + "://test:test@" +  target.toHostString() + "/thatway"), context, null);
+                SimpleRequestBuilder.get()
+                        .setScheme(target.getSchemeName())
+                        .setAuthority(new URIAuthority("test:test", target.getHostName(), target.getPort()))
+                        .setPath("/thatway")
+                        .build(), context, null);
         final SimpleHttpResponse response = future.get();
 
         Assert.assertNotNull(response);
@@ -511,7 +544,10 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
         context.setCredentialsProvider(credsProvider);
 
         for (int i = 0; i < 10; i++) {
-            final SimpleHttpRequest request = SimpleHttpRequests.get(target, "/");
+            final SimpleHttpRequest request = SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/")
+                        .build();
             request.setConfig(config);
             final Future<SimpleHttpResponse> future = httpclient.execute(request, context, null);
             final SimpleHttpResponse response = future.get();
@@ -552,7 +588,10 @@ public abstract class AbstractHttpAsyncClientAuthentication<T extends CloseableH
         final HttpClientContext context = HttpClientContext.create();
         context.setCredentialsProvider(credsProvider);
 
-        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleHttpRequests.get(target, "/"), context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/")
+                        .build(), context, null);
         final SimpleHttpResponse response = future.get();
         Assert.assertNotNull(response);
         Assert.assertEquals(HttpStatus.SC_OK, response.getCode());
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncFundamentalsTest.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncFundamentalsTest.java
index b90d858..a7e8cd6 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncFundamentalsTest.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncFundamentalsTest.java
@@ -36,8 +36,8 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
 import org.apache.hc.client5.http.protocol.HttpClientContext;
 import org.apache.hc.core5.concurrent.FutureCallback;
@@ -66,7 +66,10 @@ public abstract class AbstractHttpAsyncFundamentalsTest<T extends CloseableHttpA
         final HttpHost target = start();
         for (int i = 0; i < 3; i++) {
             final Future<SimpleHttpResponse> future = httpclient.execute(
-                    SimpleHttpRequests.get(target, "/random/2048"), null);
+                    SimpleRequestBuilder.get()
+                            .setHttpHost(target)
+                            .setPath("/random/2048")
+                            .build(), null);
             final SimpleHttpResponse response = future.get();
             Assert.assertThat(response, CoreMatchers.notNullValue());
             Assert.assertThat(response.getCode(), CoreMatchers.equalTo(200));
@@ -81,7 +84,10 @@ public abstract class AbstractHttpAsyncFundamentalsTest<T extends CloseableHttpA
         final HttpHost target = start();
         for (int i = 0; i < 3; i++) {
             final Future<SimpleHttpResponse> future = httpclient.execute(
-                    SimpleHttpRequests.head(target, "/random/2048"), null);
+                    SimpleRequestBuilder.head()
+                            .setHttpHost(target)
+                            .setPath("/random/2048")
+                            .build(), null);
             final SimpleHttpResponse response = future.get();
             Assert.assertThat(response, CoreMatchers.notNullValue());
             Assert.assertThat(response.getCode(), CoreMatchers.equalTo(200));
@@ -154,7 +160,11 @@ public abstract class AbstractHttpAsyncFundamentalsTest<T extends CloseableHttpA
                 try {
                     resultQueue.add(result);
                     if (count.decrementAndGet() > 0) {
-                        httpclient.execute(SimpleHttpRequests.get(target, "/random/2048"), this);
+                        httpclient.execute(
+                                SimpleRequestBuilder.get()
+                                        .setHttpHost(target)
+                                        .setPath("/random/2048")
+                                        .build(), this);
                     }
                 } finally {
                     countDownLatch.countDown();
@@ -180,7 +190,11 @@ public abstract class AbstractHttpAsyncFundamentalsTest<T extends CloseableHttpA
                 @Override
                 public void run() {
                     if (!Thread.currentThread().isInterrupted()) {
-                        httpclient.execute(SimpleHttpRequests.get(target, "/random/2048"), callback);
+                        httpclient.execute(
+                                SimpleRequestBuilder.get()
+                                        .setHttpHost(target)
+                                        .setPath("/random/2048")
+                                        .build(), callback);
                     }
                 }
 
@@ -205,7 +219,10 @@ public abstract class AbstractHttpAsyncFundamentalsTest<T extends CloseableHttpA
     public void testBadRequest() throws Exception {
         final HttpHost target = start();
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/random/boom"), null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/random/boom")
+                        .build(), null);
         final SimpleHttpResponse response = future.get();
         Assert.assertThat(response, CoreMatchers.notNullValue());
         Assert.assertThat(response.getCode(), CoreMatchers.equalTo(400));
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncRedirectsTest.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncRedirectsTest.java
index 31f11d3..182a385 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncRedirectsTest.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttpAsyncRedirectsTest.java
@@ -35,8 +35,8 @@ import java.util.concurrent.Future;
 import org.apache.hc.client5.http.CircularRedirectException;
 import org.apache.hc.client5.http.RedirectException;
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.config.RequestConfig;
 import org.apache.hc.client5.http.cookie.BasicCookieStore;
 import org.apache.hc.client5.http.cookie.CookieStore;
@@ -113,7 +113,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
 
         final HttpClientContext context = HttpClientContext.create();
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/"), context, null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -137,7 +140,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         });
         final HttpClientContext context = HttpClientContext.create();
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/100"), context, null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/100")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -162,7 +168,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         });
         final HttpClientContext context = HttpClientContext.create();
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/123"), context, null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/123")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -198,7 +207,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         });
         final HttpClientContext context = HttpClientContext.create();
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/100"), context, null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/100")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -222,7 +234,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         });
         final HttpClientContext context = HttpClientContext.create();
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/123"), context, null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/123")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -254,7 +269,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         final HttpHost target = start();
         final HttpClientContext context = HttpClientContext.create();
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/"), context, null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -285,7 +303,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         final HttpHost target = start();
         final HttpClientContext context = HttpClientContext.create();
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/"), context, null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -309,7 +330,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         });
         final HttpClientContext context = HttpClientContext.create();
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/123"), context, null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/123")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -338,9 +362,11 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
                 .setCircularRedirectsAllowed(true)
                 .setMaxRedirects(5).build();
         try {
-            final SimpleHttpRequest request = SimpleHttpRequests.get(target, "/circular-oldlocation/");
-            request.setConfig(config);
-            final Future<SimpleHttpResponse> future = httpclient.execute(request, null);
+            final Future<SimpleHttpResponse> future = httpclient.execute(SimpleRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath("/circular-oldlocation/")
+                    .setRequestConfig(config)
+                    .build(), null);
             future.get();
         } catch (final ExecutionException e) {
             Assert.assertTrue(e.getCause() instanceof RedirectException);
@@ -366,9 +392,12 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
                 .setCircularRedirectsAllowed(false)
                 .build();
         try {
-            final SimpleHttpRequest request = SimpleHttpRequests.get(target, "/circular-oldlocation/");
-            request.setConfig(config);
-            final Future<SimpleHttpResponse> future = httpclient.execute(request, null);
+            final Future<SimpleHttpResponse> future = httpclient.execute(
+                    SimpleRequestBuilder.get()
+                            .setHttpHost(target)
+                            .setPath("/circular-oldlocation/")
+                            .setRequestConfig(config)
+                            .build(), null);
             future.get();
         } catch (final ExecutionException e) {
             Assert.assertTrue(e.getCause() instanceof CircularRedirectException);
@@ -390,10 +419,12 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         });
 
         final HttpClientContext context = HttpClientContext.create();
-
-        final SimpleHttpRequest post = SimpleHttpRequests.post(target, "/oldlocation/stuff");
-        post.setBody("stuff", ContentType.TEXT_PLAIN);
-        final Future<SimpleHttpResponse> future = httpclient.execute(post, context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(
+                SimpleRequestBuilder.post()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/stuff")
+                        .setBody("stuff", ContentType.TEXT_PLAIN)
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -418,10 +449,12 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         });
 
         final HttpClientContext context = HttpClientContext.create();
-
-        final SimpleHttpRequest post = SimpleHttpRequests.post(target, "/oldlocation/stuff");
-        post.setBody("stuff", ContentType.TEXT_PLAIN);
-        final Future<SimpleHttpResponse> future = httpclient.execute(post, context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(
+                SimpleRequestBuilder.post()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/stuff")
+                        .setBody("stuff", ContentType.TEXT_PLAIN)
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -460,7 +493,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         final HttpClientContext context = HttpClientContext.create();
 
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/stuff"), context, null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/stuff")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -499,7 +535,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         final HttpClientContext context = HttpClientContext.create();
 
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/random/oldlocation"), context, null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/random/oldlocation")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -537,7 +576,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
 
         try {
             final Future<SimpleHttpResponse> future = httpclient.execute(
-                    SimpleHttpRequests.get(target, "/oldlocation/"), null);
+                    SimpleRequestBuilder.get()
+                            .setHttpHost(target)
+                            .setPath("/oldlocation/")
+                            .build(), null);
             future.get();
         } catch (final ExecutionException ex) {
             Assert.assertTrue(ex.getCause() instanceof HttpException);
@@ -572,7 +614,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
 
         try {
             final Future<SimpleHttpResponse> future = httpclient.execute(
-                    SimpleHttpRequests.get(target, "/oldlocation/"), null);
+                    SimpleRequestBuilder.get()
+                            .setHttpHost(target)
+                            .setPath("/oldlocation/")
+                            .build(), null);
             future.get();
         } catch (final ExecutionException e) {
             Assert.assertTrue(e.getCause() instanceof ProtocolException);
@@ -604,7 +649,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
         cookieStore.addCookie(cookie);
 
         final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/100"), context, null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/100")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -670,7 +718,10 @@ public abstract class AbstractHttpAsyncRedirectsTest <T extends CloseableHttpAsy
 
             final HttpClientContext context = HttpClientContext.create();
             final Future<SimpleHttpResponse> future = httpclient.execute(
-                    SimpleHttpRequests.get(target, "/oldlocation"), context, null);
+                    SimpleRequestBuilder.get()
+                            .setHttpHost(target)
+                            .setPath("/oldlocation")
+                            .build(), context, null);
             final HttpResponse response = future.get();
             Assert.assertNotNull(response);
 
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Async.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Async.java
index cfa3749..b76256c 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Async.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Async.java
@@ -30,9 +30,8 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.concurrent.Future;
 
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.config.RequestConfig;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
 import org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder;
@@ -121,9 +120,12 @@ public class TestHttp1Async extends AbstractHttpAsyncFundamentalsTest<CloseableH
     public void testSequenctialGetRequestsCloseConnection() throws Exception {
         final HttpHost target = start();
         for (int i = 0; i < 3; i++) {
-            final SimpleHttpRequest get = SimpleHttpRequests.get(target, "/random/2048");
-            get.setHeader(HttpHeaders.CONNECTION, HeaderElements.CLOSE);
-            final Future<SimpleHttpResponse> future = httpclient.execute(get, null);
+            final Future<SimpleHttpResponse> future = httpclient.execute(
+                    SimpleRequestBuilder.get()
+                            .setHttpHost(target)
+                            .setPath("/random/2048")
+                            .addHeader(HttpHeaders.CONNECTION, HeaderElements.CLOSE)
+                            .build(), null);
             final SimpleHttpResponse response = future.get();
             Assert.assertThat(response, CoreMatchers.notNullValue());
             Assert.assertThat(response.getCode(), CoreMatchers.equalTo(200));
@@ -151,7 +153,10 @@ public class TestHttp1Async extends AbstractHttpAsyncFundamentalsTest<CloseableH
     public void testSharedPool() throws Exception {
         final HttpHost target = start();
         final Future<SimpleHttpResponse> future1 = httpclient.execute(
-                SimpleHttpRequests.get(target, "/random/2048"), null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/random/2048")
+                        .build(), null);
         final SimpleHttpResponse response1 = future1.get();
         Assert.assertThat(response1, CoreMatchers.notNullValue());
         Assert.assertThat(response1.getCode(), CoreMatchers.equalTo(200));
@@ -166,7 +171,10 @@ public class TestHttp1Async extends AbstractHttpAsyncFundamentalsTest<CloseableH
                 .build()) {
             httpclient2.start();
             final Future<SimpleHttpResponse> future2 = httpclient2.execute(
-                    SimpleHttpRequests.get(target, "/random/2048"), null);
+                    SimpleRequestBuilder.get()
+                            .setHttpHost(target)
+                            .setPath("/random/2048")
+                            .build(), null);
             final SimpleHttpResponse response2 = future2.get();
             Assert.assertThat(response2, CoreMatchers.notNullValue());
             Assert.assertThat(response2.getCode(), CoreMatchers.equalTo(200));
@@ -176,7 +184,10 @@ public class TestHttp1Async extends AbstractHttpAsyncFundamentalsTest<CloseableH
         }
 
         final Future<SimpleHttpResponse> future3 = httpclient.execute(
-                SimpleHttpRequests.get(target, "/random/2048"), null);
+                SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/random/2048")
+                        .build(), null);
         final SimpleHttpResponse response3 = future3.get();
         Assert.assertThat(response3, CoreMatchers.notNullValue());
         Assert.assertThat(response3.getCode(), CoreMatchers.equalTo(200));
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncRedirects.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncRedirects.java
index ee72da9..4fc621a 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncRedirects.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncRedirects.java
@@ -32,8 +32,8 @@ import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.Future;
 
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.config.RequestConfig;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
 import org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder;
@@ -137,8 +137,10 @@ public class TestHttp1AsyncRedirects extends AbstractHttpAsyncRedirectsTest<Clos
 
         });
         final HttpClientContext context = HttpClientContext.create();
-        final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/"), context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -162,8 +164,10 @@ public class TestHttp1AsyncRedirects extends AbstractHttpAsyncRedirectsTest<Clos
 
         });
         final HttpClientContext context = HttpClientContext.create();
-        final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/100"), context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath("/oldlocation/100")
+                        .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
@@ -194,8 +198,10 @@ public class TestHttp1AsyncRedirects extends AbstractHttpAsyncRedirectsTest<Clos
 
         final HttpClientContext context = HttpClientContext.create();
 
-        final Future<SimpleHttpResponse> future = httpclient.execute(
-                SimpleHttpRequests.get(target, "/oldlocation/123"), context, null);
+        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleRequestBuilder.get()
+                .setHttpHost(target)
+                .setPath("/oldlocation/123")
+                .build(), context, null);
         final HttpResponse response = future.get();
         Assert.assertNotNull(response);
 
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncStatefulConnManagement.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncStatefulConnManagement.java
index da771d3..01607e5 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncStatefulConnManagement.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncStatefulConnManagement.java
@@ -31,8 +31,8 @@ import java.util.concurrent.Future;
 import org.apache.hc.client5.http.HttpRoute;
 import org.apache.hc.client5.http.UserTokenHandler;
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.config.RequestConfig;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
 import org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder;
@@ -53,6 +53,7 @@ import org.apache.hc.core5.http.nio.AsyncServerExchangeHandler;
 import org.apache.hc.core5.http.protocol.BasicHttpContext;
 import org.apache.hc.core5.http.protocol.HttpContext;
 import org.apache.hc.core5.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.net.URIAuthority;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
@@ -216,8 +217,11 @@ public class TestHttp1AsyncStatefulConnManagement extends AbstractIntegrationTes
             try {
                 context.setAttribute("user", uid);
                 for (int r = 0; r < requestCount; r++) {
-                    final SimpleHttpRequest httpget = SimpleHttpRequests.get(target, "/");
-                    final Future<SimpleHttpResponse> future = httpclient.execute(httpget, null);
+                    final SimpleHttpRequest request = SimpleRequestBuilder.get()
+                            .setHttpHost(target)
+                            .setPath("/")
+                            .build();
+                    final Future<SimpleHttpResponse> future = httpclient.execute(request, null);
                     future.get();
 
                     count++;
@@ -277,7 +281,11 @@ public class TestHttp1AsyncStatefulConnManagement extends AbstractIntegrationTes
         final HttpContext context1 = new BasicHttpContext();
         context1.setAttribute("user", "stuff");
 
-        final Future<SimpleHttpResponse> future1 = httpclient.execute(SimpleHttpRequests.get(target, "/"), context1, null);
+        final SimpleHttpRequest request1 = SimpleRequestBuilder.get()
+                .setHttpHost(target)
+                .setPath("/")
+                .build();
+        final Future<SimpleHttpResponse> future1 = httpclient.execute(request1, context1, null);
         final HttpResponse response1 = future1.get();
         Assert.assertNotNull(response1);
         Assert.assertEquals(200, response1.getCode());
@@ -292,8 +300,12 @@ public class TestHttp1AsyncStatefulConnManagement extends AbstractIntegrationTes
         // Send it to another route. Must be a keepalive.
         final HttpContext context2 = new BasicHttpContext();
 
-        final Future<SimpleHttpResponse> future2 = httpclient.execute(SimpleHttpRequests.get(
-                new HttpHost(target.getSchemeName(), "127.0.0.1", target.getPort()),"/"), context2, null);
+        final SimpleHttpRequest request2 = SimpleRequestBuilder.get()
+                .setScheme(target.getSchemeName())
+                .setAuthority(new URIAuthority("127.0.0.1", target.getPort()))
+                .setPath("/")
+                .build();
+        final Future<SimpleHttpResponse> future2 = httpclient.execute(request2, context2, null);
         final HttpResponse response2 = future2.get();
         Assert.assertNotNull(response2);
         Assert.assertEquals(200, response2.getCode());
@@ -310,7 +322,12 @@ public class TestHttp1AsyncStatefulConnManagement extends AbstractIntegrationTes
         // The killed conn is the oldest, which means the first HTTPGet ([localhost][stuff]).
         // When this happens, the RouteSpecificPool becomes empty.
         final HttpContext context3 = new BasicHttpContext();
-        final Future<SimpleHttpResponse> future3 = httpclient.execute(SimpleHttpRequests.get(target, "/"), context3, null);
+
+        final SimpleHttpRequest request3 = SimpleRequestBuilder.get()
+                .setHttpHost(target)
+                .setPath("/")
+                .build();
+        final Future<SimpleHttpResponse> future3 = httpclient.execute(request3, context3, null);
         final HttpResponse response3 = future3.get();
         Assert.assertNotNull(response3);
         Assert.assertEquals(200, response3.getCode());
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1ClientAuthentication.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1ClientAuthentication.java
index ef8167b..25764c5 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1ClientAuthentication.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1ClientAuthentication.java
@@ -31,8 +31,9 @@ import java.util.Collection;
 import java.util.concurrent.Future;
 
 import org.apache.hc.client5.http.AuthenticationStrategy;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
+import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.auth.AuthSchemeFactory;
 import org.apache.hc.client5.http.auth.AuthScope;
 import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
@@ -166,7 +167,11 @@ public class TestHttp1ClientAuthentication extends AbstractHttpAsyncClientAuthen
         final HttpClientContext context = HttpClientContext.create();
         context.setCredentialsProvider(credsProvider);
 
-        final Future<SimpleHttpResponse> future = httpclient.execute(SimpleHttpRequests.get(target, "/"), context, null);
+        final SimpleHttpRequest request = SimpleRequestBuilder.get()
+                .setHttpHost(target)
+                .setPath("/")
+                .build();
+        final Future<SimpleHttpResponse> future = httpclient.execute(request, context, null);
         final HttpResponse response = future.get();
 
         Assert.assertNotNull(response);
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Reactive.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Reactive.java
index efb74a1..eee59b5 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Reactive.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Reactive.java
@@ -31,7 +31,7 @@ import java.util.Arrays;
 import java.util.Collection;
 
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.config.RequestConfig;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
 import org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder;
@@ -126,7 +126,10 @@ public class TestHttp1Reactive extends AbstractHttpReactiveFundamentalsTest<Clos
     public void testSequentialGetRequestsCloseConnection() throws Exception {
         final HttpHost target = start();
         for (int i = 0; i < 3; i++) {
-            final SimpleHttpRequest get = SimpleHttpRequests.get(target, "/random/2048");
+            final SimpleHttpRequest get = SimpleRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath("/random/2048")
+                    .build();
             get.setHeader(HttpHeaders.CONNECTION, HeaderElements.CLOSE);
             final AsyncRequestProducer request = AsyncRequestBuilder.get(target + "/random/2048").build();
             final ReactiveResponseConsumer consumer = new ReactiveResponseConsumer();
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/external/CachingHttpAsyncClientCompatibilityTest.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/external/CachingHttpAsyncClientCompatibilityTest.java
index 598c448..72a219d 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/external/CachingHttpAsyncClientCompatibilityTest.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/external/CachingHttpAsyncClientCompatibilityTest.java
@@ -38,8 +38,8 @@ import java.util.regex.Pattern;
 import javax.net.ssl.SSLContext;
 
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.cache.CacheResponseStatus;
 import org.apache.hc.client5.http.cache.HttpCacheContext;
 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
@@ -131,7 +131,10 @@ public class CachingHttpAsyncClientCompatibilityTest {
         // Initial ping
         {
             final HttpCacheContext context = HttpCacheContext.create();
-            final SimpleHttpRequest options = SimpleHttpRequests.options(target, "*");
+            final SimpleHttpRequest options = SimpleRequestBuilder.options()
+                    .setHttpHost(target)
+                    .setPath("*")
+                    .build();
             final Future<SimpleHttpResponse> future = client.execute(options, context, null);
             try {
                 final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -155,7 +158,10 @@ public class CachingHttpAsyncClientCompatibilityTest {
 
             final Pattern linkPattern = Pattern.compile("^<(.*)>;rel=preload$");
             final List<String> links = new ArrayList<>();
-            final SimpleHttpRequest getRoot1 = SimpleHttpRequests.get(target, "/");
+            final SimpleHttpRequest getRoot1 = SimpleRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath("/")
+                    .build();
             final Future<SimpleHttpResponse> future1 = client.execute(getRoot1, context, null);
             try {
                 final SimpleHttpResponse response = future1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -179,7 +185,10 @@ public class CachingHttpAsyncClientCompatibilityTest {
                 logResult(TestResult.NOK, getRoot1, "(time out)");
             }
             for (final String link: links) {
-                final SimpleHttpRequest getLink = SimpleHttpRequests.get(target, link);
+                final SimpleHttpRequest getLink = SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath(link)
+                        .build();
                 final Future<SimpleHttpResponse> linkFuture = client.execute(getLink, context, null);
                 try {
                     final SimpleHttpResponse response = linkFuture.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -198,7 +207,10 @@ public class CachingHttpAsyncClientCompatibilityTest {
                 }
             }
 
-            final SimpleHttpRequest getRoot2 = SimpleHttpRequests.get(target, "/");
+            final SimpleHttpRequest getRoot2 = SimpleRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath("/")
+                    .build();
             final Future<SimpleHttpResponse> future2 = client.execute(getRoot2, context, null);
             try {
                 final SimpleHttpResponse response = future2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -216,7 +228,10 @@ public class CachingHttpAsyncClientCompatibilityTest {
                 logResult(TestResult.NOK, getRoot2, "(time out)");
             }
             for (final String link: links) {
-                final SimpleHttpRequest getLink = SimpleHttpRequests.get(target, link);
+                final SimpleHttpRequest getLink = SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath(link)
+                        .build();
                 final Future<SimpleHttpResponse> linkFuture = client.execute(getLink, context, null);
                 try {
                     final SimpleHttpResponse response = linkFuture.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/external/HttpAsyncClientCompatibilityTest.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/external/HttpAsyncClientCompatibilityTest.java
index 607e17b..e9eb959 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/external/HttpAsyncClientCompatibilityTest.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/external/HttpAsyncClientCompatibilityTest.java
@@ -34,8 +34,8 @@ import java.util.concurrent.TimeoutException;
 import javax.net.ssl.SSLContext;
 
 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
-import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
 import org.apache.hc.client5.http.auth.AuthScope;
 import org.apache.hc.client5.http.auth.Credentials;
 import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
@@ -177,7 +177,10 @@ public class HttpAsyncClientCompatibilityTest {
             final HttpClientContext context = HttpClientContext.create();
             context.setCredentialsProvider(credentialsProvider);
 
-            final SimpleHttpRequest options = SimpleHttpRequests.options(target, "*");
+            final SimpleHttpRequest options = SimpleRequestBuilder.options()
+                    .setHttpHost(target)
+                    .setPath("*")
+                    .build();
             final Future<SimpleHttpResponse> future = client.execute(options, context, null);
             try {
                 final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -202,7 +205,10 @@ public class HttpAsyncClientCompatibilityTest {
 
             final String[] requestUris = new String[] {"/", "/news.html", "/status.html"};
             for (final String requestUri: requestUris) {
-                final SimpleHttpRequest httpGet = SimpleHttpRequests.get(target, requestUri);
+                final SimpleHttpRequest httpGet = SimpleRequestBuilder.get()
+                        .setHttpHost(target)
+                        .setPath(requestUri)
+                        .build();
                 final Future<SimpleHttpResponse> future = client.execute(httpGet, context, null);
                 try {
                     final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -229,7 +235,10 @@ public class HttpAsyncClientCompatibilityTest {
             final HttpClientContext context = HttpClientContext.create();
             context.setCredentialsProvider(credentialsProvider);
 
-            final SimpleHttpRequest httpGetSecret = SimpleHttpRequests.get(target, "/private/big-secret.txt");
+            final SimpleHttpRequest httpGetSecret = SimpleRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath("/private/big-secret.txt")
+                    .build();
             final Future<SimpleHttpResponse> future = client.execute(httpGetSecret, context, null);
             try {
                 final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -255,7 +264,10 @@ public class HttpAsyncClientCompatibilityTest {
             final HttpClientContext context = HttpClientContext.create();
             context.setCredentialsProvider(credentialsProvider);
 
-            final SimpleHttpRequest httpGetSecret = SimpleHttpRequests.get(target, "/private/big-secret.txt");
+            final SimpleHttpRequest httpGetSecret = SimpleRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath("/private/big-secret.txt")
+                    .build();
             final Future<SimpleHttpResponse> future = client.execute(httpGetSecret, context, null);
             try {
                 final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -281,7 +293,10 @@ public class HttpAsyncClientCompatibilityTest {
             final HttpClientContext context = HttpClientContext.create();
             context.setCredentialsProvider(credentialsProvider);
 
-            final SimpleHttpRequest httpGetSecret = SimpleHttpRequests.get(target, "/private/big-secret.txt");
+            final SimpleHttpRequest httpGetSecret = SimpleRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath("/private/big-secret.txt")
+                    .build();
             final Future<SimpleHttpResponse> future = client.execute(httpGetSecret, context, null);
             try {
                 final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -308,7 +323,10 @@ public class HttpAsyncClientCompatibilityTest {
             final HttpClientContext context = HttpClientContext.create();
             context.setCredentialsProvider(credentialsProvider);
 
-            final SimpleHttpRequest httpGetSecret = SimpleHttpRequests.get(target, "/private/big-secret.txt");
+            final SimpleHttpRequest httpGetSecret = SimpleRequestBuilder.get()
+                    .setHttpHost(target)
+                    .setPath("/private/big-secret.txt")
+                    .build();
             httpGetSecret.setHeader(HttpHeaders.CONNECTION, HeaderElements.CLOSE);
             final Future<SimpleHttpResponse> future = client.execute(httpGetSecret, context, null);
             try {
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/BasicHttpRequests.java b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/BasicHttpRequests.java
index 340e9cf..c2fc683 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/BasicHttpRequests.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/BasicHttpRequests.java
@@ -37,7 +37,10 @@ import org.apache.hc.core5.http.message.BasicHttpRequest;
  * Common HTTP methods using {@link BasicHttpRequest} as a HTTP request message representation.
  *
  * @since 5.0
+ *
+ * @deprecated Use {@link org.apache.hc.core5.http.support.BasicRequestBuilder}.
  */
+@Deprecated
 public final class BasicHttpRequests {
 
     /**
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpRequests.java b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpRequests.java
index d89b45f..11a3524 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpRequests.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleHttpRequests.java
@@ -36,7 +36,10 @@ import org.apache.hc.core5.http.Method;
  * Common HTTP methods using {@link SimpleHttpRequest} as a HTTP request message representation.
  *
  * @since 5.0
+ *
+ * @deprecated Use {@link SimpleRequestBuilder}.
  */
+@Deprecated
 public final class SimpleHttpRequests {
 
     /**
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/classic/methods/ClassicHttpRequests.java b/httpclient5/src/main/java/org/apache/hc/client5/http/classic/methods/ClassicHttpRequests.java
index d7efc28..85125cf 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/classic/methods/ClassicHttpRequests.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/classic/methods/ClassicHttpRequests.java
@@ -39,7 +39,10 @@ import org.apache.hc.core5.util.Args;
  * with a non-null URI.
  *
  * @since 5.0
+ *
+ * @deprecated Use {@link org.apache.hc.core5.http.io.support.ClassicRequestBuilder}
  */
+@Deprecated
 public final class ClassicHttpRequests {
 
     /**
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/async/methods/SimpleBasicHttpRequests.java b/httpclient5/src/test/java/org/apache/hc/client5/http/async/methods/SimpleBasicHttpRequests.java
deleted file mode 100644
index 473cdbc..0000000
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/async/methods/SimpleBasicHttpRequests.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.hc.client5.http.async.methods;
-
-import java.lang.reflect.Method;
-import java.net.URI;
-import java.util.Arrays;
-
-import org.apache.hc.core5.http.HttpRequest;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class SimpleBasicHttpRequests {
-
-    private static final String URI_STRING_FIXTURE = "http://localhost";
-    private static final URI URI_FIXTURE = URI.create(URI_STRING_FIXTURE);
-
-  @Parameters(name = "{index}: {0} => {1}")
-  public static Iterable<Object[]> data() {
-    return Arrays.asList(new Object[][] {
-      // @formatter:off
-      { "delete", "DELETE" },
-      { "get", "GET" },
-      { "head", "HEAD" },
-      { "options", "OPTIONS" },
-      { "patch", "PATCH" },
-      { "post", "POST" },
-      { "put", "PUT" },
-      { "trace", "TRACE" }
-      // @formatter:on
-    });
-  }
-
-  private final String methodName;
-
-  private final String expectedMethod;
-
-  public SimpleBasicHttpRequests(final String methodName, final String expectedMethod) {
-    this.methodName = methodName;
-    this.expectedMethod = expectedMethod;
-  }
-
-  @Test
-  public void testCreateMethodUri() {
-      Assert.assertEquals(SimpleHttpRequest.class, SimpleHttpRequests.create(methodName, URI_FIXTURE).getClass());
-      Assert.assertEquals(SimpleHttpRequest.class, SimpleHttpRequests.create(expectedMethod, URI_FIXTURE).getClass());
-  }
-
-  @Test
-  public void testCreateMethodUriString() {
-      Assert.assertEquals(SimpleHttpRequest.class, SimpleHttpRequests.create(methodName, URI_STRING_FIXTURE).getClass());
-      Assert.assertEquals(SimpleHttpRequest.class, SimpleHttpRequests.create(expectedMethod, URI_STRING_FIXTURE).getClass());
-  }
-
-  @Test
-  public void testCreateClassicHttpRequest() throws Exception {
-    final Method httpMethod = SimpleHttpRequests.class.getMethod(methodName, URI.class);
-    final HttpRequest basicHttpRequest = (HttpRequest) httpMethod.invoke(null, URI_FIXTURE);
-    Assert.assertEquals(SimpleHttpRequest.class, basicHttpRequest.getClass());
-    Assert.assertEquals(expectedMethod, basicHttpRequest.getMethod());
-  }
-}
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/async/methods/TestBasicHttpRequests.java b/httpclient5/src/test/java/org/apache/hc/client5/http/async/methods/TestBasicHttpRequests.java
deleted file mode 100644
index f0e7a9b..0000000
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/async/methods/TestBasicHttpRequests.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.hc.client5.http.async.methods;
-
-import java.lang.reflect.Method;
-import java.net.URI;
-import java.util.Arrays;
-
-import org.apache.hc.core5.http.HttpRequest;
-import org.apache.hc.core5.http.message.BasicHttpRequest;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class TestBasicHttpRequests {
-
-    private static final String URI_STRING_FIXTURE = "http://localhost";
-    private static final URI URI_FIXTURE = URI.create(URI_STRING_FIXTURE);
-
-  @Parameters(name = "{index}: {0} => {1}")
-  public static Iterable<Object[]> data() {
-    return Arrays.asList(new Object[][] {
-      // @formatter:off
-      { "delete", "DELETE" },
-      { "get", "GET" },
-      { "head", "HEAD" },
-      { "options", "OPTIONS" },
-      { "patch", "PATCH" },
-      { "post", "POST" },
-      { "put", "PUT" },
-      { "trace", "TRACE" }
-      // @formatter:on
-    });
-  }
-
-  private final String methodName;
-
-  private final String expectedMethod;
-
-  public TestBasicHttpRequests(final String methodName, final String expectedMethod) {
-    this.methodName = methodName;
-    this.expectedMethod = expectedMethod;
-  }
-
-  @Test
-  public void testCreateMethodUri() {
-      Assert.assertEquals(BasicHttpRequest.class, BasicHttpRequests.create(methodName, URI_FIXTURE).getClass());
-      Assert.assertEquals(BasicHttpRequest.class, BasicHttpRequests.create(expectedMethod, URI_FIXTURE).getClass());
-  }
-
-  @Test
-  public void testCreateMethodUriString() {
-      Assert.assertEquals(BasicHttpRequest.class, BasicHttpRequests.create(methodName, URI_STRING_FIXTURE).getClass());
-      Assert.assertEquals(BasicHttpRequest.class, BasicHttpRequests.create(expectedMethod, URI_STRING_FIXTURE).getClass());
-  }
-
-  @Test
-  public void testCreateClassicHttpRequest() throws Exception {
-    final Method httpMethod = BasicHttpRequests.class.getMethod(methodName, URI.class);
-    final HttpRequest basicHttpRequest = (HttpRequest) httpMethod.invoke(null, URI_FIXTURE);
-    Assert.assertEquals(BasicHttpRequest.class, basicHttpRequest.getClass());
-    Assert.assertEquals(expectedMethod, basicHttpRequest.getMethod());
-  }
-}
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/classic/methods/TestClassicHttpRequests.java b/httpclient5/src/test/java/org/apache/hc/client5/http/classic/methods/TestClassicHttpRequests.java
deleted file mode 100644
index 63998a6..0000000
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/classic/methods/TestClassicHttpRequests.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.hc.client5.http.classic.methods;
-
-import java.lang.reflect.Method;
-import java.net.URI;
-import java.util.Arrays;
-
-import org.apache.hc.core5.http.ClassicHttpRequest;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class TestClassicHttpRequests {
-
-  private static final String URI_STRING_FIXTURE = "http://localhost";
-  private static final URI URI_FIXTURE = URI.create(URI_STRING_FIXTURE);
-
-  @Parameters(name = "{index}: {0} => {1}")
-  public static Iterable<Object[]> data() {
-    return Arrays.asList(new Object[][] {
-      // @formatter:off
-      { "delete", HttpDelete.class },
-      { "get", HttpGet.class },
-      { "head", HttpHead.class },
-      { "options", HttpOptions.class },
-      { "patch", HttpPatch.class },
-      { "post", HttpPost.class },
-      { "put", HttpPut.class },
-      { "trace", HttpTrace.class }
-      // @formatter:on
-    });
-  }
-
-  private final String methodName;
-
-  private final Class<ClassicHttpRequest> expectedClass;
-
-  public TestClassicHttpRequests(final String methodName,
-      final Class<ClassicHttpRequest> expectedClass) {
-    this.methodName = methodName;
-    this.expectedClass = expectedClass;
-  }
-
-  @Test
-  public void testCreateMethodUri() {
-      Assert.assertEquals(expectedClass, ClassicHttpRequests.create(methodName, URI_FIXTURE).getClass());
-  }
-
-  @Test
-  public void testCreateMethodUriString() {
-      Assert.assertEquals(expectedClass, ClassicHttpRequests.create(methodName, URI_STRING_FIXTURE).getClass());
-  }
-
-  @Test
-  public void testCreateFromString() throws Exception {
-      final Method httpMethod = ClassicHttpRequests.class.getMethod(methodName, String.class);
-      Assert.assertEquals(expectedClass,
-              httpMethod.invoke(null, URI_STRING_FIXTURE).getClass());
-  }
-
-  @Test
-  public void testCreateFromURI() throws Exception {
-    final Method httpMethod = ClassicHttpRequests.class.getMethod(methodName, URI.class);
-    Assert.assertEquals(expectedClass,
-            httpMethod.invoke(null, URI_FIXTURE).getClass());
-  }
-}