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 2019/04/06 12:33:12 UTC

[httpcomponents-core] branch HTTPCLIENT-1981 created (now a4f3bd5)

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

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


      at a4f3bd5  Added Methods enum (copied from HttpClient)

This branch includes the following new commits:

     new a4f3bd5  Added Methods enum (copied from HttpClient)

The 1 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.



[httpcomponents-core] 01/01: Added Methods enum (copied from HttpClient)

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

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

commit a4f3bd5b050697934f84b62b306a8366ad572ae2
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Sat Apr 6 14:16:29 2019 +0200

    Added Methods enum (copied from HttpClient)
---
 .../http2/impl/DefaultH2RequestConverter.java      |  5 +-
 .../http2/impl/nio/ServerHttp2StreamHandler.java   |  3 +-
 .../Http2ConscriptRequestExecutionExample.java     |  3 +-
 .../examples/Http2FullDuplexClientExample.java     |  3 +-
 .../examples/Http2MultiStreamExecutionExample.java |  3 +-
 .../examples/Http2RequestExecutionExample.java     |  3 +-
 .../Http2TlsAlpnRequestExecutionExample.java       |  3 +-
 .../examples/ReactiveFullDuplexClientExample.java  |  3 +-
 .../apache/hc/core5/benchmark/BenchmarkWorker.java |  3 +-
 .../hc/core5/benchmark/CommandLineUtils.java       |  3 +-
 .../hc/core5/benchmark/BenchmarkToolTest.java      |  3 +-
 .../testing/classic/ClassicAuthenticationTest.java | 19 +++--
 .../testing/classic/ClassicIntegrationTest.java    | 27 +++---
 .../classic/ClassicServerAndRequesterTest.java     | 13 +--
 .../http2/Http2CompatibilityTest.java              |  3 +-
 .../TestClassicTestClientTestingAdapter.java       |  3 +-
 .../core5/testing/nio/Http1AuthenticationTest.java | 13 +--
 .../hc/core5/testing/nio/Http1IntegrationTest.java | 81 +++++++++---------
 .../testing/nio/Http1ServerAndRequesterTest.java   | 25 +++---
 .../apache/hc/core5/testing/nio/Http2AlpnTest.java |  5 +-
 .../hc/core5/testing/nio/Http2IntegrationTest.java | 45 +++++-----
 .../testing/nio/Http2ProtocolNegotiationTest.java  |  7 +-
 .../Http2ServerAndMultiplexingRequesterTest.java   | 21 ++---
 .../testing/nio/Http2ServerAndRequesterTest.java   | 19 +++--
 .../core5/testing/reactive/ReactiveClientTest.java |  8 +-
 .../java/org/apache/hc/core5/http/Methods.java     | 94 +++++++++++++++++++++
 .../http/impl/nio/ServerHttp1StreamHandler.java    |  3 +-
 .../http/message/BasicClassicHttpRequest.java      | 36 +++++++-
 .../hc/core5/http/message/BasicHttpRequest.java    | 52 ++++++++++++
 .../hc/core5/http/message/MessageSupport.java      |  5 +-
 .../hc/core5/http/nio/BasicRequestProducer.java    | 17 ++++
 .../hc/core5/http/protocol/RequestConnControl.java |  3 +-
 .../hc/core5/http/protocol/RequestTargetHost.java  |  3 +-
 .../examples/AsyncFullDuplexClientExample.java     |  3 +-
 .../AsyncPipelinedRequestExecutionExample.java     |  3 +-
 .../examples/AsyncRequestExecutionExample.java     |  3 +-
 .../http/examples/ClassicFileServerExample.java    |  8 +-
 .../http/examples/ClassicGetExecutionExample.java  |  3 +-
 .../http/examples/ClassicPostExecutionExample.java |  3 +-
 .../ClassicPostWithTrailersExecutionExample.java   |  3 +-
 .../impl/TestDefaultConnectionReuseStrategy.java   | 11 +--
 .../impl/io/TestDefaultBHttpClientConnection.java  | 17 ++--
 .../impl/io/TestDefaultBHttpServerConnection.java  | 11 +--
 .../http/impl/io/TestHttpRequestExecutor.java      | 25 +++---
 .../hc/core5/http/impl/io/TestHttpService.java     | 13 +--
 .../hc/core5/http/impl/io/TestRequestParser.java   |  7 +-
 .../core5/http/impl/nio/TestIdentityEncoder.java   |  3 +-
 .../http/impl/nio/TestLengthDelimitedEncoder.java  |  3 +-
 .../core5/http/message/TestBasicLineFormatter.java |  5 +-
 .../hc/core5/http/message/TestBasicLineParser.java |  7 +-
 .../hc/core5/http/message/TestBasicMessages.java   | 39 ++++-----
 .../http/protocol/TestRequestHandlerRegistry.java  | 23 ++---
 .../http/protocol/TestStandardInterceptors.java    | 97 +++++++++++-----------
 53 files changed, 531 insertions(+), 293 deletions(-)

diff --git a/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/DefaultH2RequestConverter.java b/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/DefaultH2RequestConverter.java
index 69384db..14f36b4 100644
--- a/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/DefaultH2RequestConverter.java
+++ b/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/DefaultH2RequestConverter.java
@@ -38,6 +38,7 @@ import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpHeaders;
 import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.http.message.BasicHeader;
 import org.apache.hc.core5.http.message.BasicHttpRequest;
@@ -110,7 +111,7 @@ public final class DefaultH2RequestConverter implements H2MessageConverter<HttpR
         if (method == null) {
             throw new ProtocolException("Mandatory request header ':method' not found");
         }
-        if (method.equalsIgnoreCase("CONNECT")) {
+        if (Methods.CONNECT.isSame(method)) {
             if (authority == null) {
                 throw new ProtocolException("Header ':authority' is mandatory for CONNECT request");
             }
@@ -149,7 +150,7 @@ public final class DefaultH2RequestConverter implements H2MessageConverter<HttpR
         if (TextUtils.isBlank(message.getMethod())) {
             throw new ProtocolException("Request method is empty");
         }
-        final boolean optionMethod = "CONNECT".equalsIgnoreCase(message.getMethod());
+        final boolean optionMethod = Methods.CONNECT.name().equalsIgnoreCase(message.getMethod());
         if (optionMethod) {
             if (message.getAuthority() == null) {
                 throw new ProtocolException("CONNECT request authority is not set");
diff --git a/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/ServerHttp2StreamHandler.java b/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/ServerHttp2StreamHandler.java
index 0cc43ed..6e5c7ec 100644
--- a/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/ServerHttp2StreamHandler.java
+++ b/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/ServerHttp2StreamHandler.java
@@ -38,6 +38,7 @@ import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.http.impl.BasicHttpConnectionMetrics;
 import org.apache.hc.core5.http.impl.IncomingEntityDetails;
@@ -154,7 +155,7 @@ public class ServerHttp2StreamHandler implements Http2StreamHandler {
 
             Asserts.notNull(receivedRequest, "Received request");
             final String method = receivedRequest.getMethod();
-            final boolean endStream = responseEntityDetails == null || method.equalsIgnoreCase("HEAD");
+            final boolean endStream = responseEntityDetails == null || Methods.HEAD.isSame(method);
             outputChannel.submit(responseHeaders, endStream);
             connMetrics.incrementResponseCount();
             if (responseEntityDetails == null) {
diff --git a/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2ConscriptRequestExecutionExample.java b/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2ConscriptRequestExecutionExample.java
index 45e051e..05bf3c4 100644
--- a/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2ConscriptRequestExecutionExample.java
+++ b/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2ConscriptRequestExecutionExample.java
@@ -38,6 +38,7 @@ import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
 import org.apache.hc.core5.http.nio.AsyncClientEndpoint;
 import org.apache.hc.core5.http.nio.BasicRequestProducer;
@@ -124,7 +125,7 @@ public class Http2ConscriptRequestExecutionExample {
             final Future<AsyncClientEndpoint> future = requester.connect(target, Timeout.ofDays(5));
             final AsyncClientEndpoint clientEndpoint = future.get();
             clientEndpoint.execute(
-                    new BasicRequestProducer("GET", target, requestUri),
+                    new BasicRequestProducer(Methods.GET, target, requestUri),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()),
                     new FutureCallback<Message<HttpResponse, String>>() {
 
diff --git a/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2FullDuplexClientExample.java b/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2FullDuplexClientExample.java
index 1978daa..5810a44 100644
--- a/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2FullDuplexClientExample.java
+++ b/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2FullDuplexClientExample.java
@@ -39,6 +39,7 @@ import org.apache.hc.core5.http.Header;
 import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
 import org.apache.hc.core5.http.nio.AsyncClientExchangeHandler;
 import org.apache.hc.core5.http.nio.BasicRequestProducer;
@@ -125,7 +126,7 @@ public class Http2FullDuplexClientExample {
 
         final URI requestUri = new URI("http://nghttp2.org/httpbin/post");
         final BasicRequestProducer requestProducer = new BasicRequestProducer(
-                "POST", requestUri, new BasicAsyncEntityProducer("stuff", ContentType.TEXT_PLAIN));
+                Methods.POST.name(), requestUri, new BasicAsyncEntityProducer("stuff", ContentType.TEXT_PLAIN));
         final BasicResponseConsumer<String> responseConsumer = new BasicResponseConsumer<>(
                 new StringAsyncEntityConsumer());
 
diff --git a/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2MultiStreamExecutionExample.java b/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2MultiStreamExecutionExample.java
index bebe2df..1dce851 100644
--- a/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2MultiStreamExecutionExample.java
+++ b/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2MultiStreamExecutionExample.java
@@ -37,6 +37,7 @@ import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
 import org.apache.hc.core5.http.nio.AsyncClientEndpoint;
 import org.apache.hc.core5.http.nio.BasicRequestProducer;
@@ -124,7 +125,7 @@ public class Http2MultiStreamExecutionExample {
         final CountDownLatch latch = new CountDownLatch(requestUris.length);
         for (final String requestUri: requestUris) {
             clientEndpoint.execute(
-                    new BasicRequestProducer("GET", target, requestUri),
+                    new BasicRequestProducer(Methods.GET, target, requestUri),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()),
                     new FutureCallback<Message<HttpResponse, String>>() {
 
diff --git a/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2RequestExecutionExample.java b/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2RequestExecutionExample.java
index 2ecc322..725f629 100644
--- a/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2RequestExecutionExample.java
+++ b/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2RequestExecutionExample.java
@@ -36,6 +36,7 @@ import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
 import org.apache.hc.core5.http.nio.AsyncClientEndpoint;
 import org.apache.hc.core5.http.nio.BasicRequestProducer;
@@ -115,7 +116,7 @@ public class Http2RequestExecutionExample {
             final Future<AsyncClientEndpoint> future = requester.connect(target, Timeout.ofSeconds(5));
             final AsyncClientEndpoint clientEndpoint = future.get();
             clientEndpoint.execute(
-                    new BasicRequestProducer("GET", target, requestUri),
+                    new BasicRequestProducer(Methods.GET, target, requestUri),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()),
                     new FutureCallback<Message<HttpResponse, String>>() {
 
diff --git a/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2TlsAlpnRequestExecutionExample.java b/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2TlsAlpnRequestExecutionExample.java
index 231ba2a..bf9e7c5 100644
--- a/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2TlsAlpnRequestExecutionExample.java
+++ b/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/examples/Http2TlsAlpnRequestExecutionExample.java
@@ -39,6 +39,7 @@ import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
 import org.apache.hc.core5.http.nio.AsyncClientEndpoint;
 import org.apache.hc.core5.http.nio.BasicRequestProducer;
@@ -135,7 +136,7 @@ public class Http2TlsAlpnRequestExecutionExample {
             final Future<AsyncClientEndpoint> future = requester.connect(target, Timeout.ofSeconds(5));
             final AsyncClientEndpoint clientEndpoint = future.get();
             clientEndpoint.execute(
-                    new BasicRequestProducer("GET", target, requestUri),
+                    new BasicRequestProducer(Methods.GET, target, requestUri),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()),
                     new FutureCallback<Message<HttpResponse, String>>() {
 
diff --git a/httpcore5-reactive/src/test/java/org/apache/hc/core5/reactive/examples/ReactiveFullDuplexClientExample.java b/httpcore5-reactive/src/test/java/org/apache/hc/core5/reactive/examples/ReactiveFullDuplexClientExample.java
index 6db9791..1d79201 100644
--- a/httpcore5-reactive/src/test/java/org/apache/hc/core5/reactive/examples/ReactiveFullDuplexClientExample.java
+++ b/httpcore5-reactive/src/test/java/org/apache/hc/core5/reactive/examples/ReactiveFullDuplexClientExample.java
@@ -40,6 +40,7 @@ import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.Http1StreamListener;
 import org.apache.hc.core5.http.impl.bootstrap.AsyncRequesterBootstrap;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
@@ -122,7 +123,7 @@ public class ReactiveFullDuplexClientExample {
             ContentType.TEXT_PLAIN, null);
         final URI requestUri = new URI(endpoint);
         final BasicRequestProducer requestProducer = new BasicRequestProducer(
-            "POST", requestUri, reactiveEntityProducer);
+            Methods.POST.name(), requestUri, reactiveEntityProducer);
 
         final ReactiveResponseConsumer consumer = new ReactiveResponseConsumer();
         final Future<Void> responseComplete = requester.execute(requestProducer, consumer, Timeout.ofSeconds(30), null);
diff --git a/httpcore5-testing/src/main/java/org/apache/hc/core5/benchmark/BenchmarkWorker.java b/httpcore5-testing/src/main/java/org/apache/hc/core5/benchmark/BenchmarkWorker.java
index 479cfcf..a254653 100644
--- a/httpcore5-testing/src/main/java/org/apache/hc/core5/benchmark/BenchmarkWorker.java
+++ b/httpcore5-testing/src/main/java/org/apache/hc/core5/benchmark/BenchmarkWorker.java
@@ -46,6 +46,7 @@ import org.apache.hc.core5.http.HttpHeaders;
 import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
 import org.apache.hc.core5.http.message.BasicHeader;
 import org.apache.hc.core5.http.message.BasicHttpRequest;
@@ -94,7 +95,7 @@ class BenchmarkWorker implements ResourceHolder {
     private AsyncRequestProducer createRequestProducer() {
         String method = config.getMethod();
         if (method == null) {
-            method = config.isHeadInsteadOfGet() ? "HEAD" : "GET";
+            method = config.isHeadInsteadOfGet() ? Methods.HEAD.name() : Methods.GET.name();
         }
 
         final BasicHttpRequest request = new BasicHttpRequest(method, config.getUri());
diff --git a/httpcore5-testing/src/main/java/org/apache/hc/core5/benchmark/CommandLineUtils.java b/httpcore5-testing/src/main/java/org/apache/hc/core5/benchmark/CommandLineUtils.java
index 67f979f..784fdb7 100644
--- a/httpcore5-testing/src/main/java/org/apache/hc/core5/benchmark/CommandLineUtils.java
+++ b/httpcore5-testing/src/main/java/org/apache/hc/core5/benchmark/CommandLineUtils.java
@@ -35,6 +35,7 @@ import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
 import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.util.TimeValue;
 import org.apache.hc.core5.util.Timeout;
 
@@ -214,7 +215,7 @@ public class CommandLineUtils {
         if (cmd.hasOption('m')) {
             builder.setMethod(cmd.getOptionValue('m'));
         } else if (cmd.hasOption('p')) {
-            builder.setMethod("POST");
+            builder.setMethod(Methods.POST.name());
         }
 
         if (cmd.hasOption('u')) {
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/benchmark/BenchmarkToolTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/benchmark/BenchmarkToolTest.java
index 7743cd1..eb618e6 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/benchmark/BenchmarkToolTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/benchmark/BenchmarkToolTest.java
@@ -39,6 +39,7 @@ import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.URIScheme;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncServer;
 import org.apache.hc.core5.http.nio.AsyncRequestConsumer;
@@ -120,7 +121,7 @@ public class BenchmarkToolTest {
     public void testBasics() throws Exception {
         final BenchmarkConfig config = BenchmarkConfig.custom()
                 .setKeepAlive(true)
-                .setMethod("POST")
+                .setMethod(Methods.POST.name())
                 .setPayloadText("0123456789ABCDEF")
                 .setUri(new URIBuilder()
                         .setScheme(URIScheme.HTTP.id)
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicAuthenticationTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicAuthenticationTest.java
index c14bae1..54d255a 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicAuthenticationTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicAuthenticationTest.java
@@ -42,12 +42,13 @@ import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
-import org.apache.hc.core5.http.io.SocketConfig;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.bootstrap.HttpRequester;
 import org.apache.hc.core5.http.impl.bootstrap.HttpServer;
 import org.apache.hc.core5.http.impl.bootstrap.RequesterBootstrap;
 import org.apache.hc.core5.http.impl.bootstrap.ServerBootstrap;
 import org.apache.hc.core5.http.impl.bootstrap.StandardFilters;
+import org.apache.hc.core5.http.io.SocketConfig;
 import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
 import org.apache.hc.core5.http.io.entity.EntityUtils;
 import org.apache.hc.core5.http.io.entity.StringEntity;
@@ -58,8 +59,6 @@ import org.apache.hc.core5.http.protocol.HttpCoreContext;
 import org.apache.hc.core5.io.CloseMode;
 import org.apache.hc.core5.net.URIAuthority;
 import org.apache.hc.core5.util.Timeout;
-import org.slf4j.LoggerFactory;
-import org.slf4j.Logger;
 import org.hamcrest.CoreMatchers;
 import org.junit.Assert;
 import org.junit.Rule;
@@ -67,6 +66,8 @@ import org.junit.Test;
 import org.junit.rules.ExternalResource;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @RunWith(Parameterized.class)
 public class ClassicAuthenticationTest {
@@ -190,13 +191,13 @@ public class ClassicAuthenticationTest {
         server.start();
         final HttpHost target = new HttpHost("localhost", server.getLocalPort());
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request1 = new BasicClassicHttpRequest("GET", "/stuff");
+        final ClassicHttpRequest request1 = new BasicClassicHttpRequest(Methods.GET, "/stuff");
         try (final ClassicHttpResponse response1 = requester.execute(target, request1, TIMEOUT, context)) {
             Assert.assertThat(response1.getCode(), CoreMatchers.equalTo(HttpStatus.SC_UNAUTHORIZED));
             final String body1 = EntityUtils.toString(response1.getEntity());
             Assert.assertThat(body1, CoreMatchers.equalTo("You shall not pass!!!"));
         }
-        final ClassicHttpRequest request2 = new BasicClassicHttpRequest("GET", "/stuff");
+        final ClassicHttpRequest request2 = new BasicClassicHttpRequest(Methods.GET, "/stuff");
         request2.setHeader(HttpHeaders.AUTHORIZATION, "let me pass");
         try (final ClassicHttpResponse response2 = requester.execute(target, request2, TIMEOUT, context)) {
             Assert.assertThat(response2.getCode(), CoreMatchers.equalTo(HttpStatus.SC_OK));
@@ -215,14 +216,14 @@ public class ClassicAuthenticationTest {
         for (int i = 0; i < stuff.length; i++) {
             stuff[i] = (byte)('a' + rnd.nextInt(10));
         }
-        final ClassicHttpRequest request1 = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request1 = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request1.setEntity(new ByteArrayEntity(stuff, ContentType.TEXT_PLAIN));
         try (final ClassicHttpResponse response1 = requester.execute(target, request1, TIMEOUT, context)) {
             Assert.assertThat(response1.getCode(), CoreMatchers.equalTo(HttpStatus.SC_UNAUTHORIZED));
             final String body1 = EntityUtils.toString(response1.getEntity());
             Assert.assertThat(body1, CoreMatchers.equalTo("You shall not pass!!!"));
         }
-        final ClassicHttpRequest request2 = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request2 = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request2.setHeader(HttpHeaders.AUTHORIZATION, "let me pass");
         request2.setEntity(new ByteArrayEntity(stuff, ContentType.TEXT_PLAIN));
         try (final ClassicHttpResponse response2 = requester.execute(target, request2, TIMEOUT, context)) {
@@ -242,7 +243,7 @@ public class ClassicAuthenticationTest {
         for (int i = 0; i < stuff.length; i++) {
             stuff[i] = (byte)('a' + rnd.nextInt(10));
         }
-        final ClassicHttpRequest request1 = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request1 = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request1.setVersion(HttpVersion.HTTP_1_0);
         request1.setEntity(new ByteArrayEntity(stuff, ContentType.TEXT_PLAIN));
         try (final ClassicHttpResponse response1 = requester.execute(target, request1, TIMEOUT, context)) {
@@ -250,7 +251,7 @@ public class ClassicAuthenticationTest {
             final String body1 = EntityUtils.toString(response1.getEntity());
             Assert.assertThat(body1, CoreMatchers.equalTo("You shall not pass!!!"));
         }
-        final ClassicHttpRequest request2 = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request2 = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request2.setHeader(HttpHeaders.AUTHORIZATION, "let me pass");
         request2.setVersion(HttpVersion.HTTP_1_0);
         request2.setEntity(new ByteArrayEntity(stuff, ContentType.TEXT_PLAIN));
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicIntegrationTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicIntegrationTest.java
index 6bc1bdf..6605085 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicIntegrationTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicIntegrationTest.java
@@ -55,6 +55,7 @@ import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpRequestInterceptor;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.URIScheme;
 import org.apache.hc.core5.http.io.HttpRequestHandler;
 import org.apache.hc.core5.http.io.HttpServerRequestHandler;
@@ -200,7 +201,7 @@ public class ClassicIntegrationTest {
         final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
 
         for (int r = 0; r < reqNo; r++) {
-            final BasicClassicHttpRequest get = new BasicClassicHttpRequest("GET", "/?" + r);
+            final BasicClassicHttpRequest get = new BasicClassicHttpRequest(Methods.GET, "/?" + r);
             try (final ClassicHttpResponse response = this.client.execute(host, get, context)) {
                 final byte[] received = EntityUtils.toByteArray(response.getEntity());
                 final byte[] expected = testData.get(r);
@@ -258,7 +259,7 @@ public class ClassicIntegrationTest {
         final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
 
         for (int r = 0; r < reqNo; r++) {
-            final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/");
+            final BasicClassicHttpRequest post = new BasicClassicHttpRequest(Methods.POST, "/");
             final byte[] data = testData.get(r);
             post.setEntity(new ByteArrayEntity(data, null));
 
@@ -319,7 +320,7 @@ public class ClassicIntegrationTest {
         final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
 
         for (int r = 0; r < reqNo; r++) {
-            final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/");
+            final BasicClassicHttpRequest post = new BasicClassicHttpRequest(Methods.POST, "/");
             final byte[] data = testData.get(r);
             post.setEntity(new ByteArrayEntity(data, null, true));
 
@@ -383,7 +384,7 @@ public class ClassicIntegrationTest {
 
         for (int r = 0; r < reqNo; r++) {
             // Set protocol level to HTTP/1.0
-            final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/");
+            final BasicClassicHttpRequest post = new BasicClassicHttpRequest(Methods.POST, "/");
             post.setVersion(HttpVersion.HTTP_1_0);
             final byte[] data = testData.get(r);
             post.setEntity(new ByteArrayEntity(data, null));
@@ -449,7 +450,7 @@ public class ClassicIntegrationTest {
         final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
 
         for (int r = 0; r < reqNo; r++) {
-            final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/");
+            final BasicClassicHttpRequest post = new BasicClassicHttpRequest(Methods.POST, "/");
             final byte[] data = testData.get(r);
             post.setEntity(new ByteArrayEntity(data, null, true));
 
@@ -525,7 +526,7 @@ public class ClassicIntegrationTest {
         final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
 
         for (int r = 0; r < reqNo; r++) {
-            final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/");
+            final BasicClassicHttpRequest post = new BasicClassicHttpRequest(Methods.POST, "/");
             post.addHeader("Secret", Integer.toString(r));
 
             final byte[] b = new byte[2048];
@@ -667,7 +668,7 @@ public class ClassicIntegrationTest {
         for (final String pattern : patterns) {
             for (int n = 1000; n < 1020; n++) {
                 final BasicClassicHttpRequest post = new BasicClassicHttpRequest(
-                        "POST", "/?n=" + n);
+                        Methods.POST.name(), "/?n=" + n);
                 post.setEntity(new StringEntity(pattern, ContentType.TEXT_PLAIN, n % 2 == 0));
 
                 try (final ClassicHttpResponse response = this.client.execute(host, post, context)) {
@@ -719,7 +720,7 @@ public class ClassicIntegrationTest {
         final HttpCoreContext context = HttpCoreContext.create();
         final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
 
-        final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest post = new BasicClassicHttpRequest(Methods.POST, "/");
         post.setEntity(null);
 
         try (final ClassicHttpResponse response = this.client.execute(host, post, context)) {
@@ -758,7 +759,7 @@ public class ClassicIntegrationTest {
         final HttpCoreContext context = HttpCoreContext.create();
         final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
 
-        final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest post = new BasicClassicHttpRequest(Methods.POST, "/");
         post.setEntity(null);
 
         try (final ClassicHttpResponse response = this.client.execute(host, post, context)) {
@@ -808,7 +809,7 @@ public class ClassicIntegrationTest {
         final HttpCoreContext context = HttpCoreContext.create();
         final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
 
-        final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest post = new BasicClassicHttpRequest(Methods.POST, "/");
         post.setEntity(null);
 
         try (final ClassicHttpResponse response = this.client.execute(host, post, context)) {
@@ -841,7 +842,7 @@ public class ClassicIntegrationTest {
         final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
 
         for (int r = 0; r < reqNo; r++) {
-            final BasicClassicHttpRequest get = new BasicClassicHttpRequest("GET", "/?" + r);
+            final BasicClassicHttpRequest get = new BasicClassicHttpRequest(Methods.GET, "/?" + r);
             try (final ClassicHttpResponse response = this.client.execute(host, get, context)) {
                 Assert.assertNull(response.getEntity());
             }
@@ -870,14 +871,14 @@ public class ClassicIntegrationTest {
         final HttpCoreContext context = HttpCoreContext.create();
         final HttpHost host = new HttpHost(scheme.id, "localhost", this.server.getPort());
 
-        final BasicClassicHttpRequest get1 = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest get1 = new BasicClassicHttpRequest(Methods.GET, "/");
         get1.setVersion(HttpVersion.HTTP_1_0);
         try (final ClassicHttpResponse response1 = this.client.execute(host, get1, context)) {
             Assert.assertEquals(200, response1.getCode());
             EntityUtils.consume(response1.getEntity());
         }
 
-        final BasicClassicHttpRequest get2 = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest get2 = new BasicClassicHttpRequest(Methods.GET, "/");
         try (final ClassicHttpResponse response2 = this.client.execute(host, get2, context)) {
             Assert.assertEquals(400, response2.getCode());
             EntityUtils.consume(response2.getEntity());
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicServerAndRequesterTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicServerAndRequesterTest.java
index eae1558..1570584 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicServerAndRequesterTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/classic/ClassicServerAndRequesterTest.java
@@ -39,6 +39,7 @@ import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpHeaders;
 import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.URIScheme;
 import org.apache.hc.core5.http.impl.bootstrap.HttpRequester;
 import org.apache.hc.core5.http.impl.bootstrap.HttpServer;
@@ -185,21 +186,21 @@ public class ClassicServerAndRequesterTest {
         server.start();
         final HttpHost target = new HttpHost(scheme.id, "localhost", server.getLocalPort());
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request1 = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request1 = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request1.setEntity(new StringEntity("some stuff", ContentType.TEXT_PLAIN));
         try (final ClassicHttpResponse response1 = requester.execute(target, request1, TIMEOUT, context)) {
             Assert.assertThat(response1.getCode(), CoreMatchers.equalTo(HttpStatus.SC_OK));
             final String body1 = EntityUtils.toString(response1.getEntity());
             Assert.assertThat(body1, CoreMatchers.equalTo("some stuff"));
         }
-        final ClassicHttpRequest request2 = new BasicClassicHttpRequest("POST", "/other-stuff");
+        final ClassicHttpRequest request2 = new BasicClassicHttpRequest(Methods.POST, "/other-stuff");
         request2.setEntity(new StringEntity("some other stuff", ContentType.TEXT_PLAIN));
         try (final ClassicHttpResponse response2 = requester.execute(target, request2, TIMEOUT, context)) {
             Assert.assertThat(response2.getCode(), CoreMatchers.equalTo(HttpStatus.SC_OK));
             final String body2 = EntityUtils.toString(response2.getEntity());
             Assert.assertThat(body2, CoreMatchers.equalTo("some other stuff"));
         }
-        final ClassicHttpRequest request3 = new BasicClassicHttpRequest("POST", "/more-stuff");
+        final ClassicHttpRequest request3 = new BasicClassicHttpRequest(Methods.POST, "/more-stuff");
         request3.setEntity(new StringEntity("some more stuff", ContentType.TEXT_PLAIN));
         try (final ClassicHttpResponse response3 = requester.execute(target, request3, TIMEOUT, context)) {
             Assert.assertThat(response3.getCode(), CoreMatchers.equalTo(HttpStatus.SC_OK));
@@ -213,21 +214,21 @@ public class ClassicServerAndRequesterTest {
         server.start();
         final HttpHost target = new HttpHost(scheme.id, "localhost", server.getLocalPort());
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request1 = new BasicClassicHttpRequest("POST", "/no-keep-alive/stuff");
+        final ClassicHttpRequest request1 = new BasicClassicHttpRequest(Methods.POST, "/no-keep-alive/stuff");
         request1.setEntity(new StringEntity("some stuff", ContentType.TEXT_PLAIN));
         try (final ClassicHttpResponse response1 = requester.execute(target, request1, TIMEOUT, context)) {
             Assert.assertThat(response1.getCode(), CoreMatchers.equalTo(HttpStatus.SC_OK));
             final String body1 = EntityUtils.toString(response1.getEntity());
             Assert.assertThat(body1, CoreMatchers.equalTo("some stuff"));
         }
-        final ClassicHttpRequest request2 = new BasicClassicHttpRequest("POST", "/no-keep-alive/other-stuff");
+        final ClassicHttpRequest request2 = new BasicClassicHttpRequest(Methods.POST, "/no-keep-alive/other-stuff");
         request2.setEntity(new StringEntity("some other stuff", ContentType.TEXT_PLAIN));
         try (final ClassicHttpResponse response2 = requester.execute(target, request2, TIMEOUT, context)) {
             Assert.assertThat(response2.getCode(), CoreMatchers.equalTo(HttpStatus.SC_OK));
             final String body2 = EntityUtils.toString(response2.getEntity());
             Assert.assertThat(body2, CoreMatchers.equalTo("some other stuff"));
         }
-        final ClassicHttpRequest request3 = new BasicClassicHttpRequest("POST", "/no-keep-alive/more-stuff");
+        final ClassicHttpRequest request3 = new BasicClassicHttpRequest(Methods.POST, "/no-keep-alive/more-stuff");
         request3.setEntity(new StringEntity("some more stuff", ContentType.TEXT_PLAIN));
         try (final ClassicHttpResponse response3 = requester.execute(target, request3, TIMEOUT, context)) {
             Assert.assertThat(response3.getCode(), CoreMatchers.equalTo(HttpStatus.SC_OK));
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/compatibility/http2/Http2CompatibilityTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/compatibility/http2/Http2CompatibilityTest.java
index 14ae499..de3051e 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/compatibility/http2/Http2CompatibilityTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/compatibility/http2/Http2CompatibilityTest.java
@@ -47,6 +47,7 @@ import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.message.BasicHttpRequest;
 import org.apache.hc.core5.http.nio.AsyncPushConsumer;
 import org.apache.hc.core5.http.nio.BasicRequestProducer;
@@ -147,7 +148,7 @@ public class Http2CompatibilityTest {
             });
         }
         for (final String requestUri: REQUEST_URIS) {
-            final HttpRequest request = new BasicHttpRequest("GET", target, requestUri);
+            final HttpRequest request = new BasicHttpRequest(Methods.GET, target, requestUri);
             clientEndpoint.execute(
                     new BasicRequestProducer(request, null),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()),
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/framework/TestClassicTestClientTestingAdapter.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/framework/TestClassicTestClientTestingAdapter.java
index 00c5f40..1c434db 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/framework/TestClassicTestClientTestingAdapter.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/framework/TestClassicTestClientTestingAdapter.java
@@ -42,6 +42,7 @@ import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.io.SocketConfig;
 import org.apache.hc.core5.http.protocol.HttpContext;
 import org.apache.hc.core5.io.CloseMode;
@@ -212,7 +213,7 @@ public class TestClassicTestClientTestingAdapter {
         final String defaultURI = target.toString();
         final Map<String, Object> request = new HashMap<>();
         request.put(PATH, ECHO_PATH);
-        request.put(METHOD, "POST");
+        request.put(METHOD, Methods.POST.name());
         final String body = "mybody";
         request.put(BODY, body);
 
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1AuthenticationTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1AuthenticationTest.java
index 2e88994..b9a47f4 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1AuthenticationTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1AuthenticationTest.java
@@ -44,6 +44,7 @@ import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.bootstrap.AsyncRequesterBootstrap;
 import org.apache.hc.core5.http.impl.bootstrap.AsyncServerBootstrap;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
@@ -210,7 +211,7 @@ public class Http1AuthenticationTest {
 
         final HttpHost target = new HttpHost("localhost", address.getPort());
 
-        final HttpRequest request1 = new BasicHttpRequest("GET", target, "/stuff");
+        final HttpRequest request1 = new BasicHttpRequest(Methods.GET, target, "/stuff");
         final Future<Message<HttpResponse, String>> resultFuture1 = requester.execute(
                 new BasicRequestProducer(request1, null),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
@@ -221,7 +222,7 @@ public class Http1AuthenticationTest {
         final String body1 = message1.getBody();
         Assert.assertThat(body1, CoreMatchers.equalTo("You shall not pass!!!"));
 
-        final HttpRequest request2 = new BasicHttpRequest("GET", target, "/stuff");
+        final HttpRequest request2 = new BasicHttpRequest(Methods.GET, target, "/stuff");
         request2.setHeader(HttpHeaders.AUTHORIZATION, "let me pass");
         final Future<Message<HttpResponse, String>> resultFuture2 = requester.execute(
                 new BasicRequestProducer(request2, null),
@@ -248,7 +249,7 @@ public class Http1AuthenticationTest {
         for (int i = 0; i < stuff.length; i++) {
             stuff[i] = (byte)('a' + rnd.nextInt(10));
         }
-        final HttpRequest request1 = new BasicHttpRequest("POST", target, "/stuff");
+        final HttpRequest request1 = new BasicHttpRequest(Methods.POST, target, "/stuff");
         final Future<Message<HttpResponse, String>> resultFuture1 = requester.execute(
                 new BasicRequestProducer(request1, new BasicAsyncEntityProducer(stuff, ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
@@ -259,7 +260,7 @@ public class Http1AuthenticationTest {
         final String body1 = message1.getBody();
         Assert.assertThat(body1, CoreMatchers.equalTo("You shall not pass!!!"));
 
-        final HttpRequest request2 = new BasicHttpRequest("POST", target, "/stuff");
+        final HttpRequest request2 = new BasicHttpRequest(Methods.POST, target, "/stuff");
         request2.setHeader(HttpHeaders.AUTHORIZATION, "let me pass");
         final Future<Message<HttpResponse, String>> resultFuture2 = requester.execute(
                 new BasicRequestProducer(request2, new BasicAsyncEntityProducer(stuff, ContentType.TEXT_PLAIN)),
@@ -287,7 +288,7 @@ public class Http1AuthenticationTest {
             stuff[i] = (byte)('a' + rnd.nextInt(10));
         }
 
-        final HttpRequest request1 = new BasicHttpRequest("POST", target, "/stuff");
+        final HttpRequest request1 = new BasicHttpRequest(Methods.POST, target, "/stuff");
         request1.setVersion(HttpVersion.HTTP_1_0);
         final Future<Message<HttpResponse, String>> resultFuture1 = requester.execute(
                 new BasicRequestProducer(request1, new BasicAsyncEntityProducer(stuff, ContentType.TEXT_PLAIN)),
@@ -299,7 +300,7 @@ public class Http1AuthenticationTest {
         final String body1 = message1.getBody();
         Assert.assertThat(body1, CoreMatchers.equalTo("You shall not pass!!!"));
 
-        final HttpRequest request2 = new BasicHttpRequest("POST", target, "/stuff");
+        final HttpRequest request2 = new BasicHttpRequest(Methods.POST, target, "/stuff");
         request2.setVersion(HttpVersion.HTTP_1_0);
         request2.setHeader(HttpHeaders.AUTHORIZATION, "let me pass");
         final Future<Message<HttpResponse, String>> resultFuture2 = requester.execute(
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1IntegrationTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1IntegrationTest.java
index 11d3a3b..ad5f960 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1IntegrationTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1IntegrationTest.java
@@ -74,6 +74,7 @@ import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
 import org.apache.hc.core5.http.MalformedChunkCodingException;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.http.URIScheme;
 import org.apache.hc.core5.http.config.CharCodingConfig;
@@ -214,7 +215,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
 
         for (int i = 0; i < 5; i++) {
             final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
-                    new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/hello")),
+                    new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/hello")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             final Message<HttpResponse, String> result = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
             Assert.assertNotNull(result);
@@ -244,7 +245,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/hello")),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/hello")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Message<HttpResponse, String> result = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
         Assert.assertNotNull(result);
@@ -275,7 +276,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
         for (int i = 0; i < 5; i++) {
             queue.add(streamEndpoint.execute(
-                    new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/hello")),
+                    new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/hello")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
         }
         while (!queue.isEmpty()) {
@@ -308,7 +309,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/")),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
 
         final Message<HttpResponse, String> result1 = future1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -324,7 +325,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         }
 
         final Future<Message<HttpResponse, String>> future2 = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/")),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer(512)), null);
 
         final Message<HttpResponse, String> result2 = future2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -360,7 +361,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
         for (int i = 0; i < 5; i++) {
             queue.add(streamEndpoint.execute(
-                    new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/")),
+                    new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
         }
         while (!queue.isEmpty()) {
@@ -398,7 +399,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
 
         for (int i = 0; i < 5; i++) {
             final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
-                    new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/hello"),
+                    new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/hello"),
                             new BasicAsyncEntityProducer("Hi there")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             final Message<HttpResponse, String> result = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -431,7 +432,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
         for (int i = 0; i < 5; i++) {
             queue.add(streamEndpoint.execute(
-                    new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/hello"),
+                    new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/hello"),
                             new BasicAsyncEntityProducer("Hi there")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
         }
@@ -465,7 +466,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         for (int i = 0; i < 5; i++) {
-            final HttpRequest request = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/hello"));
+            final HttpRequest request = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/hello"));
             request.setVersion(HttpVersion.HTTP_1_0);
             final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
                     new BasicRequestProducer(request, new BasicAsyncEntityProducer("Hi there")),
@@ -498,7 +499,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         for (int i = 0; i < 5; i++) {
-            final HttpRequest request = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/hello"));
+            final HttpRequest request = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/hello"));
             final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
                     new BasicRequestProducer(request, null),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
@@ -531,7 +532,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
 
         for (int i = 0; i < 5; i++) {
             final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
-                    new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/echo"),
+                    new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/echo"),
                             new MultiLineEntityProducer("0123456789abcdef", 5000)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             final Message<HttpResponse, String> result = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -568,7 +569,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
         for (int i = 0; i < 2; i++) {
             queue.add(streamEndpoint.execute(
-                    new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/"),
+                    new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/"),
                             new BasicAsyncEntityProducer("Hi there")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
         }
@@ -609,7 +610,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
         for (int i = 0; i < 5; i++) {
             queue.add(streamEndpoint.execute(
-                    new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/echo"),
+                    new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/echo"),
                             new MultiLineEntityProducer("0123456789abcdef", 5000)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
         }
@@ -648,7 +649,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
 
         for (int i = 0; i < 5; i++) {
             final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
-                    new BasicRequestProducer("HEAD", createRequestURI(serverEndpoint, "/hello")),
+                    new BasicRequestProducer(Methods.HEAD, createRequestURI(serverEndpoint, "/hello")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             final Message<HttpResponse, String> result = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
             Assert.assertNotNull(result);
@@ -679,7 +680,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
         for (int i = 0; i < 5; i++) {
             queue.add(streamEndpoint.execute(
-                    new BasicRequestProducer("HEAD", createRequestURI(serverEndpoint, "/hello")),
+                    new BasicRequestProducer(Methods.HEAD, createRequestURI(serverEndpoint, "/hello")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
         }
         while (!queue.isEmpty()) {
@@ -740,7 +741,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final IOSession ioSession = sessionFuture.get();
         final ClientSessionEndpoint streamEndpoint = new ClientSessionEndpoint(ioSession);
 
-        final HttpRequest request1 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/echo"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/echo"));
         request1.addHeader("password", "secret");
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, new MultiLineEntityProducer("0123456789abcdef", 1000)),
@@ -754,7 +755,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
 
         Assert.assertFalse(ioSession.isClosed());
 
-        final HttpRequest request2 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/echo"));
+        final HttpRequest request2 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/echo"));
         final Future<Message<HttpResponse, String>> future2 = streamEndpoint.execute(
                 new BasicRequestProducer(request2, new MultiLineEntityProducer("0123456789abcdef", 5000)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
@@ -767,7 +768,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
 
         Assert.assertFalse(ioSession.isClosed());
 
-        final HttpRequest request3 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/echo"));
+        final HttpRequest request3 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/echo"));
         request3.addHeader("password", "secret");
         final Future<Message<HttpResponse, String>> future3 = streamEndpoint.execute(
                 new BasicRequestProducer(request3, new MultiLineEntityProducer("0123456789abcdef", 1000)),
@@ -781,7 +782,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
 
         Assert.assertFalse(ioSession.isClosed());
 
-        final HttpRequest request4 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/echo"));
+        final HttpRequest request4 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/echo"));
         final Future<Message<HttpResponse, String>> future4 = streamEndpoint.execute(
                 new BasicRequestProducer(request4, new BasicAsyncEntityProducer("blah")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
@@ -886,7 +887,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
         for (int i = 0; i < 5; i++) {
             queue.add(streamEndpoint.execute(
-                    new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/"),
+                    new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/"),
                             new BasicAsyncEntityProducer("Some important message")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
         }
@@ -971,7 +972,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final HttpRequest request1 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/echo"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/echo"));
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, new MultiLineEntityProducer("0123456789abcdef", 5000)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
@@ -1001,7 +1002,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final HttpRequest request1 = new BasicHttpRequest("GET", createRequestURI(serverEndpoint, "/"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.GET, createRequestURI(serverEndpoint, "/"));
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, null),
                 new BasicResponseConsumer<>(new AbstractClassicEntityConsumer<String>(16, Executors.newSingleThreadExecutor()) {
@@ -1061,7 +1062,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final HttpRequest request1 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/echo"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/echo"));
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, new AbstractClassicEntityProducer(4096, ContentType.TEXT_PLAIN, Executors.newSingleThreadExecutor()) {
 
@@ -1120,7 +1121,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
                             response.setCode(HttpStatus.SC_NOT_FOUND);
                             return;
                         }
-                        if (!"POST".equalsIgnoreCase(request.getMethod())) {
+                        if (!Methods.POST.name().equalsIgnoreCase(request.getMethod())) {
                             response.setCode(HttpStatus.SC_NOT_IMPLEMENTED);
                             return;
                         }
@@ -1167,7 +1168,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final HttpRequest request1 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/hello"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/hello"));
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, new MultiLineEntityProducer("0123456789abcd", 2000)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
@@ -1202,17 +1203,17 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
-                new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/hello-1"),
+                new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/hello-1"),
                         new BasicAsyncEntityProducer("Hi there")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
-        final HttpRequest request2 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/hello-2"));
+        final HttpRequest request2 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/hello-2"));
         request2.addHeader(HttpHeaders.CONNECTION, "close");
         final Future<Message<HttpResponse, String>> future2 = streamEndpoint.execute(
                 new BasicRequestProducer(request2,
                         new BasicAsyncEntityProducer("Hi there")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Future<Message<HttpResponse, String>> future3 = streamEndpoint.execute(
-                new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/hello-3"),
+                new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/hello-3"),
                         new BasicAsyncEntityProducer("Hi there")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
 
@@ -1239,7 +1240,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         }
 
         final Future<Message<HttpResponse, String>> future4 = streamEndpoint.execute(
-                new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/hello-3"),
+                new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/hello-3"),
                         new BasicAsyncEntityProducer("Hi there")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         try {
@@ -1269,17 +1270,17 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
-                new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/hello-1"),
+                new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/hello-1"),
                         new BasicAsyncEntityProducer("Hi there")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
-        final HttpRequest request2 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/hello-2"));
+        final HttpRequest request2 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/hello-2"));
         request2.addHeader(HttpHeaders.HOST, "blah:blah");
         final Future<Message<HttpResponse, String>> future2 = streamEndpoint.execute(
                 new BasicRequestProducer(request2,
                         new BasicAsyncEntityProducer("Hi there")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Future<Message<HttpResponse, String>> future3 = streamEndpoint.execute(
-                new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/hello-3"),
+                new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/hello-3"),
                         new BasicAsyncEntityProducer("Hi there")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
 
@@ -1424,7 +1425,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final AsyncRequestProducer requestProducer = new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/hello"));
+        final AsyncRequestProducer requestProducer = new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/hello"));
         final StringAsyncEntityConsumer entityConsumer = new StringAsyncEntityConsumer() {
 
             @Override
@@ -1472,7 +1473,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/hello")),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/hello")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Message<HttpResponse, String> result = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
         Assert.assertNotNull(result);
@@ -1493,7 +1494,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/hello")),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/hello")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Message<HttpResponse, String> result = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
         Assert.assertNotNull(result);
@@ -1532,7 +1533,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/hello")),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/hello")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Message<HttpResponse, String> result = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
         Assert.assertNotNull(result);
@@ -1560,7 +1561,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final HttpRequest request1 = new BasicHttpRequest("GET", createRequestURI(serverEndpoint, "/hello"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.GET, createRequestURI(serverEndpoint, "/hello"));
         request1.setVersion(HttpVersion.HTTP_1_0);
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, null),
@@ -1572,7 +1573,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
         Assert.assertEquals(200, response1.getCode());
         Assert.assertEquals("Hi there", result1.getBody());
 
-        final HttpRequest request2 = new BasicHttpRequest("GET", createRequestURI(serverEndpoint, "/hello"));
+        final HttpRequest request2 = new BasicHttpRequest(Methods.GET, createRequestURI(serverEndpoint, "/hello"));
         request2.setVersion(HttpVersion.HTTP_1_1);
         final Future<Message<HttpResponse, String>> future2 = streamEndpoint.execute(
                 new BasicRequestProducer(request2, null),
@@ -1623,7 +1624,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final HttpRequest request1 = new BasicHttpRequest("GET", createRequestURI(serverEndpoint, "/hello"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.GET, createRequestURI(serverEndpoint, "/hello"));
         final DigestingEntityConsumer<String> entityConsumer = new DigestingEntityConsumer<>("MD5", new StringAsyncEntityConsumer());
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, null),
@@ -1716,7 +1717,7 @@ public class Http1IntegrationTest extends InternalHttp1ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
         final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/boom")),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/boom")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Message<HttpResponse, String> result = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
         Assert.assertNotNull(result);
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1ServerAndRequesterTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1ServerAndRequesterTest.java
index 98a9e87..cd6ce76 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1ServerAndRequesterTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1ServerAndRequesterTest.java
@@ -47,6 +47,7 @@ import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.URIScheme;
 import org.apache.hc.core5.http.impl.bootstrap.AsyncRequesterBootstrap;
 import org.apache.hc.core5.http.impl.bootstrap.AsyncServerBootstrap;
@@ -245,7 +246,7 @@ public class Http1ServerAndRequesterTest {
 
         final HttpHost target = new HttpHost(scheme.id, "localhost", address.getPort());
         final Future<Message<HttpResponse, String>> resultFuture1 = requester.execute(
-                new BasicRequestProducer("POST", target, "/stuff",
+                new BasicRequestProducer(Methods.POST, target, "/stuff",
                         new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message1 = resultFuture1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -256,7 +257,7 @@ public class Http1ServerAndRequesterTest {
         Assert.assertThat(body1, CoreMatchers.equalTo("some stuff"));
 
         final Future<Message<HttpResponse, String>> resultFuture2 = requester.execute(
-                new BasicRequestProducer("POST", target, "/other-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/other-stuff",
                         new StringAsyncEntityProducer("some other stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message2 = resultFuture2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -267,7 +268,7 @@ public class Http1ServerAndRequesterTest {
         Assert.assertThat(body2, CoreMatchers.equalTo("some other stuff"));
 
         final Future<Message<HttpResponse, String>> resultFuture3 = requester.execute(
-                new BasicRequestProducer("POST", target, "/more-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/more-stuff",
                         new StringAsyncEntityProducer("some more stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message3 = resultFuture3.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -288,7 +289,7 @@ public class Http1ServerAndRequesterTest {
 
         final HttpHost target = new HttpHost(scheme.id, "localhost", address.getPort());
         final Future<Message<HttpResponse, String>> resultFuture1 = requester.execute(
-                new BasicRequestProducer("POST", target, "/no-keep-alive/stuff",
+                new BasicRequestProducer(Methods.POST, target, "/no-keep-alive/stuff",
                         new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message1 = resultFuture1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -299,7 +300,7 @@ public class Http1ServerAndRequesterTest {
         Assert.assertThat(body1, CoreMatchers.equalTo("some stuff"));
 
         final Future<Message<HttpResponse, String>> resultFuture2 = requester.execute(
-                new BasicRequestProducer("POST", target, "/no-keep-alive/other-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/no-keep-alive/other-stuff",
                         new StringAsyncEntityProducer("some other stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message2 = resultFuture2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -310,7 +311,7 @@ public class Http1ServerAndRequesterTest {
         Assert.assertThat(body2, CoreMatchers.equalTo("some other stuff"));
 
         final Future<Message<HttpResponse, String>> resultFuture3 = requester.execute(
-                new BasicRequestProducer("POST", target, "/no-keep-alive/more-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/no-keep-alive/more-stuff",
                         new StringAsyncEntityProducer("some more stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message3 = resultFuture3.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -335,7 +336,7 @@ public class Http1ServerAndRequesterTest {
         try {
 
             final Future<Message<HttpResponse, String>> resultFuture1 = endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/stuff",
                             new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             final Message<HttpResponse, String> message1 = resultFuture1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -346,7 +347,7 @@ public class Http1ServerAndRequesterTest {
             Assert.assertThat(body1, CoreMatchers.equalTo("some stuff"));
 
             final Future<Message<HttpResponse, String>> resultFuture2 = endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/other-stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/other-stuff",
                             new StringAsyncEntityProducer("some other stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             final Message<HttpResponse, String> message2 = resultFuture2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -357,7 +358,7 @@ public class Http1ServerAndRequesterTest {
             Assert.assertThat(body2, CoreMatchers.equalTo("some other stuff"));
 
             final Future<Message<HttpResponse, String>> resultFuture3 = endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/more-stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/more-stuff",
                             new StringAsyncEntityProducer("some more stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             final Message<HttpResponse, String> message3 = resultFuture3.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -388,15 +389,15 @@ public class Http1ServerAndRequesterTest {
             final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
 
             queue.add(endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/stuff",
                             new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
             queue.add(endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/other-stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/other-stuff",
                             new StringAsyncEntityProducer("some other stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
             queue.add(endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/more-stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/more-stuff",
                             new StringAsyncEntityProducer("some more stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
 
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2AlpnTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2AlpnTest.java
index 7142368..660eda0 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2AlpnTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2AlpnTest.java
@@ -39,6 +39,7 @@ import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.URIScheme;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncServer;
 import org.apache.hc.core5.http.nio.AsyncServerExchangeHandler;
@@ -190,7 +191,7 @@ public class Http2AlpnTest {
 
         final HttpHost target = new HttpHost(URIScheme.HTTPS.id, "localhost", address.getPort());
         final Future<Message<HttpResponse, String>> resultFuture1 = requester.execute(
-                new BasicRequestProducer("POST", target, "/stuff",
+                new BasicRequestProducer(Methods.POST, target, "/stuff",
                         new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message1 = resultFuture1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -227,7 +228,7 @@ public class Http2AlpnTest {
 
         final HttpHost target = new HttpHost(URIScheme.HTTPS.id, "localhost", address.getPort());
         final Future<Message<HttpResponse, String>> resultFuture1 = requester.execute(
-                new BasicRequestProducer("POST", target, "/stuff",
+                new BasicRequestProducer(Methods.POST, target, "/stuff",
                         new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         try {
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2IntegrationTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2IntegrationTest.java
index a6d4b42..d7fc2a6 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2IntegrationTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2IntegrationTest.java
@@ -76,6 +76,7 @@ import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.http.URIScheme;
 import org.apache.hc.core5.http.message.BasicHttpRequest;
@@ -206,7 +207,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
         final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
         for (int i = 0; i < 10; i++) {
             queue.add(streamEndpoint.execute(
-                    new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/hello")),
+                    new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/hello")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
 
         }
@@ -241,7 +242,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
 
         for (int i = 0; i < 5; i++) {
             final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
-                    new BasicRequestProducer("HEAD", createRequestURI(serverEndpoint, "/hello")),
+                    new BasicRequestProducer(Methods.HEAD, createRequestURI(serverEndpoint, "/hello")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             final Message<HttpResponse, String> result = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
             Assert.assertNotNull(result);
@@ -270,11 +271,11 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/"), null),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/"), null),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
 
         final Future<Message<HttpResponse, String>> future2 = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/")),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer(512)), null);
 
         final Message<HttpResponse, String> result1 = future1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -321,7 +322,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
 
         final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
         for (int i = 0; i < 10; i++) {
-            final HttpRequest request = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/hello"));
+            final HttpRequest request = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/hello"));
             queue.add(streamEndpoint.execute(
                     new BasicRequestProducer(request, new StringAsyncEntityProducer("Hi there", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
@@ -357,7 +358,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
-                new BasicRequestProducer("POST", createRequestURI(serverEndpoint, "/echo"),
+                new BasicRequestProducer(Methods.POST, createRequestURI(serverEndpoint, "/echo"),
                         new MultiLineEntityProducer("0123456789abcdef", 5000)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Message<HttpResponse, String> result1 = future1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -391,7 +392,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/"), null),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/"), null),
                 new BasicResponseConsumer<>(new AbstractClassicEntityConsumer<String>(16, Executors.newSingleThreadExecutor()) {
 
                     @Override
@@ -449,7 +450,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final HttpRequest request1 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/echo"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/echo"));
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, new AbstractClassicEntityProducer(4096, ContentType.TEXT_PLAIN, Executors.newSingleThreadExecutor()) {
 
@@ -508,7 +509,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
                             response.setCode(HttpStatus.SC_NOT_FOUND);
                             return;
                         }
-                        if (!"POST".equalsIgnoreCase(request.getMethod())) {
+                        if (!Methods.POST.name().equalsIgnoreCase(request.getMethod())) {
                             response.setCode(HttpStatus.SC_NOT_IMPLEMENTED);
                             return;
                         }
@@ -557,7 +558,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final HttpRequest request1 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/hello"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/hello"));
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, new MultiLineEntityProducer("0123456789abcd", 2000)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
@@ -589,7 +590,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
                             final AsyncServerRequestHandler.ResponseTrigger responseTrigger,
                             final HttpContext context) throws IOException, HttpException {
                         responseTrigger.pushPromise(
-                                new BasicHttpRequest("GET", createRequestURI(serverEndpoint, "/stuff")),
+                                new BasicHttpRequest(Methods.GET, createRequestURI(serverEndpoint, "/stuff")),
                                 context, new BasicPushProducer(new MultiLineEntityProducer("Pushing lots of stuff", 500)));
                         responseTrigger.submitResponse(new BasicResponseProducer(
                                 HttpStatus.SC_OK,
@@ -609,7 +610,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/hello")),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/hello")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()),
                 new HandlerFactory<AsyncPushConsumer>() {
 
@@ -672,7 +673,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
                             final HttpContext context) throws IOException, HttpException {
 
                         responseTrigger.pushPromise(
-                                new BasicHttpRequest("GET", createRequestURI(serverEndpoint, "/stuff")),
+                                new BasicHttpRequest(Methods.GET, createRequestURI(serverEndpoint, "/stuff")),
                                 context, new BasicPushProducer(new BasicAsyncEntityProducer("Pushing all sorts of stuff")) {
 
                             @Override
@@ -683,7 +684,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
 
                         });
                         responseTrigger.pushPromise(
-                                new BasicHttpRequest("GET", createRequestURI(serverEndpoint, "/more-stuff")),
+                                new BasicHttpRequest(Methods.GET, createRequestURI(serverEndpoint, "/more-stuff")),
                                 context, new BasicPushProducer(new MultiLineEntityProducer("Pushing lots of stuff", 500)) {
 
                             @Override
@@ -709,7 +710,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
-                new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/hello")),
+                new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/hello")),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Message<HttpResponse, String> result1 = future1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
         Assert.assertNotNull(result1);
@@ -749,7 +750,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
 
         final Queue<Future<Message<HttpResponse, Void>>> queue = new LinkedList<>();
         for (int i = 0; i < 2000; i++) {
-            final HttpRequest request1 = new BasicHttpRequest("GET", createRequestURI(serverEndpoint, "/"));
+            final HttpRequest request1 = new BasicHttpRequest(Methods.GET, createRequestURI(serverEndpoint, "/"));
             final Future<Message<HttpResponse, Void>> future = streamEndpoint.execute(
                     new BasicRequestProducer(request1, null),
                     new BasicResponseConsumer<>(new NoopEntityConsumer()), null);
@@ -812,7 +813,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final HttpRequest request1 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/echo"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/echo"));
         request1.addHeader("password", "secret");
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, new MultiLineEntityProducer("0123456789abcdef", 5000)),
@@ -824,7 +825,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
         Assert.assertEquals(200, response1.getCode());
         Assert.assertNotNull("All is well", result1.getBody());
 
-        final HttpRequest request2 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/echo"));
+        final HttpRequest request2 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/echo"));
         final Future<Message<HttpResponse, String>> future2 = streamEndpoint.execute(
                 new BasicRequestProducer(request2, new MultiLineEntityProducer("0123456789abcdef", 5000)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
@@ -906,7 +907,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final HttpRequest request1 = new BasicHttpRequest("POST", createRequestURI(serverEndpoint, "/echo"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.POST, createRequestURI(serverEndpoint, "/echo"));
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, new MultiLineEntityProducer("0123456789abcdef", 5000)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
@@ -956,7 +957,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();
 
-        final HttpRequest request1 = new BasicHttpRequest("GET", createRequestURI(serverEndpoint, "/hello"));
+        final HttpRequest request1 = new BasicHttpRequest(Methods.GET, createRequestURI(serverEndpoint, "/hello"));
         final DigestingEntityConsumer<String> entityConsumer = new DigestingEntityConsumer<>("MD5", new StringAsyncEntityConsumer());
         final Future<Message<HttpResponse, String>> future1 = streamEndpoint.execute(
                 new BasicRequestProducer(request1, null),
@@ -1002,7 +1003,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
         final AtomicInteger count = new AtomicInteger(0);
         for (int i = 0; i < n; i++) {
             streamEndpoint.execute(
-                    new BasicRequestProducer("GET", createRequestURI(serverEndpoint, "/hello")),
+                    new BasicRequestProducer(Methods.GET, createRequestURI(serverEndpoint, "/hello")),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             streamEndpoint.execute(new PingCommand(new BasicPingHandler(new Callback<Boolean>() {
 
@@ -1039,7 +1040,7 @@ public class Http2IntegrationTest extends InternalHttp2ServerTestBase {
         final IOSession session = sessionFuture.get();
         final ClientSessionEndpoint streamEndpoint = new ClientSessionEndpoint(session);
 
-        final HttpRequest request = new BasicHttpRequest("GET", createRequestURI(serverEndpoint, "/hello"));
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, createRequestURI(serverEndpoint, "/hello"));
         request.addHeader(HttpHeaders.CONNECTION, HeaderElements.CLOSE);
         final Future<Message<HttpResponse, String>> future = streamEndpoint.execute(
                     new BasicRequestProducer(request, null),
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ProtocolNegotiationTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ProtocolNegotiationTest.java
index fe9f9a6..0ac28f6 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ProtocolNegotiationTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ProtocolNegotiationTest.java
@@ -38,6 +38,7 @@ import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.ProtocolVersion;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncServer;
 import org.apache.hc.core5.http.nio.AsyncClientEndpoint;
@@ -200,7 +201,7 @@ public class Http2ProtocolNegotiationTest {
         final AsyncClientEndpoint endpoint = connectFuture.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
 
         final Future<Message<HttpResponse, String>> resultFuture1 = endpoint.execute(
-                new BasicRequestProducer("POST", target, "/stuff",
+                new BasicRequestProducer(Methods.POST, target, "/stuff",
                         new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Message<HttpResponse, String> message1 = resultFuture1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -223,7 +224,7 @@ public class Http2ProtocolNegotiationTest {
         final AsyncClientEndpoint endpoint = connectFuture.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
 
         final Future<Message<HttpResponse, String>> resultFuture1 = endpoint.execute(
-                new BasicRequestProducer("POST", target, "/stuff",
+                new BasicRequestProducer(Methods.POST, target, "/stuff",
                         new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Message<HttpResponse, String> message1 = resultFuture1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -246,7 +247,7 @@ public class Http2ProtocolNegotiationTest {
         final AsyncClientEndpoint endpoint = connectFuture.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
 
         final Future<Message<HttpResponse, String>> resultFuture1 = endpoint.execute(
-                new BasicRequestProducer("POST", target, "/stuff",
+                new BasicRequestProducer(Methods.POST, target, "/stuff",
                         new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
         final Message<HttpResponse, String> message1 = resultFuture1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ServerAndMultiplexingRequesterTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ServerAndMultiplexingRequesterTest.java
index b2d1a68..c1c19b4 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ServerAndMultiplexingRequesterTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ServerAndMultiplexingRequesterTest.java
@@ -44,6 +44,7 @@ import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.URIScheme;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncServer;
 import org.apache.hc.core5.http.nio.AsyncServerExchangeHandler;
@@ -214,7 +215,7 @@ public class Http2ServerAndMultiplexingRequesterTest {
 
         final HttpHost target = new HttpHost(scheme.id, "localhost", address.getPort());
         final Future<Message<HttpResponse, String>> resultFuture1 = requester.execute(
-                new BasicRequestProducer("POST", target, "/stuff",
+                new BasicRequestProducer(Methods.POST, target, "/stuff",
                         new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message1 = resultFuture1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -225,7 +226,7 @@ public class Http2ServerAndMultiplexingRequesterTest {
         Assert.assertThat(body1, CoreMatchers.equalTo("some stuff"));
 
         final Future<Message<HttpResponse, String>> resultFuture2 = requester.execute(
-                new BasicRequestProducer("POST", target, "/other-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/other-stuff",
                         new StringAsyncEntityProducer("some other stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message2 = resultFuture2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -236,7 +237,7 @@ public class Http2ServerAndMultiplexingRequesterTest {
         Assert.assertThat(body2, CoreMatchers.equalTo("some other stuff"));
 
         final Future<Message<HttpResponse, String>> resultFuture3 = requester.execute(
-                new BasicRequestProducer("POST", target, "/more-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/more-stuff",
                         new StringAsyncEntityProducer("some more stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message3 = resultFuture3.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -259,15 +260,15 @@ public class Http2ServerAndMultiplexingRequesterTest {
         final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
 
         queue.add(requester.execute(
-                new BasicRequestProducer("POST", target, "/stuff",
+                new BasicRequestProducer(Methods.POST, target, "/stuff",
                         new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null));
         queue.add(requester.execute(
-                new BasicRequestProducer("POST", target, "/other-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/other-stuff",
                         new StringAsyncEntityProducer("some other stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null));
         queue.add(requester.execute(
-                new BasicRequestProducer("POST", target, "/more-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/more-stuff",
                         new StringAsyncEntityProducer("some more stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null));
 
@@ -293,7 +294,7 @@ public class Http2ServerAndMultiplexingRequesterTest {
 
         final HttpHost target = new HttpHost(scheme.id, "localhost", address.getPort());
         final Future<Message<HttpResponse, String>> resultFuture1 = requester.execute(
-                new BasicRequestProducer("POST", target, "/stuff",
+                new BasicRequestProducer(Methods.POST, target, "/stuff",
                         new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message1 = resultFuture1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -306,7 +307,7 @@ public class Http2ServerAndMultiplexingRequesterTest {
         Thread.sleep(100);
 
         final Future<Message<HttpResponse, String>> resultFuture2 = requester.execute(
-                new BasicRequestProducer("POST", target, "/other-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/other-stuff",
                         new StringAsyncEntityProducer("some other stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message2 = resultFuture2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -319,7 +320,7 @@ public class Http2ServerAndMultiplexingRequesterTest {
         Thread.sleep(100);
 
         final Future<Message<HttpResponse, String>> resultFuture3 = requester.execute(
-                new BasicRequestProducer("POST", target, "/more-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/more-stuff",
                         new StringAsyncEntityProducer("some more stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message3 = resultFuture3.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -345,7 +346,7 @@ public class Http2ServerAndMultiplexingRequesterTest {
         final HttpHost target = new HttpHost(scheme.id, "localhost", address.getPort());
         for (int i = 0; i < reqNo; i++) {
             final Cancellable cancellable = requester.execute(
-                    new BasicClientExchangeHandler<>(new BasicRequestProducer("POST", target, "/stuff",
+                    new BasicClientExchangeHandler<>(new BasicRequestProducer(Methods.POST, target, "/stuff",
                             new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                             new BasicResponseConsumer<>(new StringAsyncEntityConsumer() {
 
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ServerAndRequesterTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ServerAndRequesterTest.java
index 4db8b51..a35a4e8 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ServerAndRequesterTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http2ServerAndRequesterTest.java
@@ -41,6 +41,7 @@ import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.URIScheme;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncServer;
@@ -218,7 +219,7 @@ public class Http2ServerAndRequesterTest {
 
         final HttpHost target = new HttpHost(scheme.id, "localhost", address.getPort());
         final Future<Message<HttpResponse, String>> resultFuture1 = requester.execute(
-                new BasicRequestProducer("POST", target, "/stuff",
+                new BasicRequestProducer(Methods.POST, target, "/stuff",
                         new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message1 = resultFuture1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -229,7 +230,7 @@ public class Http2ServerAndRequesterTest {
         Assert.assertThat(body1, CoreMatchers.equalTo("some stuff"));
 
         final Future<Message<HttpResponse, String>> resultFuture2 = requester.execute(
-                new BasicRequestProducer("POST", target, "/other-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/other-stuff",
                         new StringAsyncEntityProducer("some other stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message2 = resultFuture2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -240,7 +241,7 @@ public class Http2ServerAndRequesterTest {
         Assert.assertThat(body2, CoreMatchers.equalTo("some other stuff"));
 
         final Future<Message<HttpResponse, String>> resultFuture3 = requester.execute(
-                new BasicRequestProducer("POST", target, "/more-stuff",
+                new BasicRequestProducer(Methods.POST, target, "/more-stuff",
                         new StringAsyncEntityProducer("some more stuff", ContentType.TEXT_PLAIN)),
                 new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), TIMEOUT, null);
         final Message<HttpResponse, String> message3 = resultFuture3.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -265,7 +266,7 @@ public class Http2ServerAndRequesterTest {
         try {
 
             final Future<Message<HttpResponse, String>> resultFuture1 = endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/stuff",
                             new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             final Message<HttpResponse, String> message1 = resultFuture1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -276,7 +277,7 @@ public class Http2ServerAndRequesterTest {
             Assert.assertThat(body1, CoreMatchers.equalTo("some stuff"));
 
             final Future<Message<HttpResponse, String>> resultFuture2 = endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/other-stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/other-stuff",
                             new StringAsyncEntityProducer("some other stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             final Message<HttpResponse, String> message2 = resultFuture2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -287,7 +288,7 @@ public class Http2ServerAndRequesterTest {
             Assert.assertThat(body2, CoreMatchers.equalTo("some other stuff"));
 
             final Future<Message<HttpResponse, String>> resultFuture3 = endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/more-stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/more-stuff",
                             new StringAsyncEntityProducer("some more stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null);
             final Message<HttpResponse, String> message3 = resultFuture3.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -318,15 +319,15 @@ public class Http2ServerAndRequesterTest {
             final Queue<Future<Message<HttpResponse, String>>> queue = new LinkedList<>();
 
             queue.add(endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/stuff",
                             new StringAsyncEntityProducer("some stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
             queue.add(endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/other-stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/other-stuff",
                             new StringAsyncEntityProducer("some other stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
             queue.add(endpoint.execute(
-                    new BasicRequestProducer("POST", target, "/more-stuff",
+                    new BasicRequestProducer(Methods.POST, target, "/more-stuff",
                             new StringAsyncEntityProducer("some more stuff", ContentType.TEXT_PLAIN)),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()), null));
 
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/reactive/ReactiveClientTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/reactive/ReactiveClientTest.java
index ab39507..c344b25 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/reactive/ReactiveClientTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/reactive/ReactiveClientTest.java
@@ -26,6 +26,8 @@
  */
 package org.apache.hc.core5.testing.reactive;
 
+import static java.lang.String.format;
+
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.net.InetSocketAddress;
@@ -56,6 +58,7 @@ import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStreamResetException;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.BasicEntityDetails;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncServer;
@@ -98,8 +101,6 @@ import io.reactivex.functions.Action;
 import io.reactivex.functions.Consumer;
 import io.reactivex.functions.Function;
 
-import static java.lang.String.format;
-
 @RunWith(Parameterized.class)
 public class ReactiveClientTest {
 
@@ -264,8 +265,7 @@ public class ReactiveClientTest {
     }
 
     private BasicRequestProducer getRequestProducer(final InetSocketAddress address, final ReactiveEntityProducer producer) {
-        return new BasicRequestProducer("POST",
-            URI.create("http://localhost:" + address.getPort()), producer);
+        return new BasicRequestProducer(Methods.POST, URI.create("http://localhost:" + address.getPort()), producer);
     }
 
     @Test
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/Methods.java b/httpcore5/src/main/java/org/apache/hc/core5/http/Methods.java
new file mode 100644
index 0000000..345f97a
--- /dev/null
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/Methods.java
@@ -0,0 +1,94 @@
+/*
+ * ====================================================================
+ * 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.core5.http;
+
+import java.util.Locale;
+
+/**
+ * Common HTTP methods defined by the HTTP spec.
+ *
+ * @since 5.0
+ */
+public enum Methods {
+
+    GET(true, true),
+    HEAD(true, true),
+    POST(false, false),
+    PUT(false, true),
+    DELETE(false, true),
+    CONNECT(false, false),
+    TRACE(true, true),
+    OPTIONS(true, true),
+    PATCH(false, false);
+
+    private final boolean safe;
+    private final boolean idempotent;
+
+    Methods(final boolean safe, final boolean idempotent) {
+        this.safe = safe;
+        this.idempotent = idempotent;
+    }
+
+    public boolean isSafe() {
+        return safe;
+    }
+
+    public boolean isIdempotent() {
+        return idempotent;
+    }
+
+    public static boolean isSafe(final String value) {
+        if (value == null) {
+            return false;
+        }
+        try {
+            return valueOf(value.toUpperCase(Locale.ROOT)).safe;
+        } catch (final IllegalArgumentException ex) {
+            return false;
+        }
+    }
+
+    public static boolean isIdempotent(final String value) {
+        if (value == null) {
+            return false;
+        }
+        try {
+            return valueOf(value.toUpperCase(Locale.ROOT)).idempotent;
+        } catch (final IllegalArgumentException ex) {
+            return false;
+        }
+    }
+
+    public boolean isSame(final String value) {
+        if (value == null) {
+            return false;
+        }
+        return name().equalsIgnoreCase(value);
+    }
+
+}
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamHandler.java
index c3f770a..12c986d 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamHandler.java
@@ -39,6 +39,7 @@ import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.MisdirectedRequestException;
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.http.ProtocolVersion;
@@ -140,7 +141,7 @@ class ServerHttp1StreamHandler implements ResourceHolder {
             context.setAttribute(HttpCoreContext.HTTP_RESPONSE, response);
             httpProcessor.process(response, responseEntityDetails, context);
 
-            final boolean endStream = responseEntityDetails == null || method.equalsIgnoreCase("HEAD");
+            final boolean endStream = responseEntityDetails == null || Methods.HEAD.isSame(method);
 
             if (!connectionReuseStrategy.keepAlive(receivedRequest, response, context)) {
                 keepAlive = false;
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicClassicHttpRequest.java b/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicClassicHttpRequest.java
index e7b2344..d807c09 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicClassicHttpRequest.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicClassicHttpRequest.java
@@ -32,6 +32,7 @@ import java.net.URI;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.Methods;
 
 /**
  * Basic implementation of {@link ClassicHttpRequest}.
@@ -60,8 +61,6 @@ public class BasicClassicHttpRequest extends BasicHttpRequest implements Classic
      * @param method request method.
      * @param host request host.
      * @param path request path.
-     *
-     * @since 5.0
      */
     public BasicClassicHttpRequest(final String method, final HttpHost host, final String path) {
         super(method, host, path);
@@ -72,13 +71,42 @@ public class BasicClassicHttpRequest extends BasicHttpRequest implements Classic
      *
      * @param method request method.
      * @param requestUri request URI.
-     *
-     * @since 5.0
      */
     public BasicClassicHttpRequest(final String method, final URI requestUri) {
         super(method, requestUri);
     }
 
+    /**
+     * Creates request message with the given method and request path.
+     *
+     * @param method request method.
+     * @param path request path.
+     */
+    public BasicClassicHttpRequest(final Methods method, final String path) {
+        super(method, path);
+    }
+
+    /**
+     * Creates request message with the given method, host and request path.
+     *
+     * @param method request method.
+     * @param host request host.
+     * @param path request path.
+     */
+    public BasicClassicHttpRequest(final Methods method, final HttpHost host, final String path) {
+        super(method, host, path);
+    }
+
+    /**
+     * Creates request message with the given method, request URI.
+     *
+     * @param method request method.
+     * @param requestUri request URI.
+     */
+    public BasicClassicHttpRequest(final Methods method, final URI requestUri) {
+        super(method, requestUri);
+    }
+
     @Override
     public HttpEntity getEntity() {
         return this.entity;
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java b/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
index 63c7b4c..b89a66a 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
@@ -32,6 +32,7 @@ import java.net.URISyntaxException;
 
 import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.ProtocolVersion;
 import org.apache.hc.core5.http.URIScheme;
 import org.apache.hc.core5.net.URIAuthority;
@@ -103,6 +104,57 @@ public class BasicHttpRequest extends HeaderGroup implements HttpRequest {
         setUri(Args.notNull(requestUri, "Request URI"));
     }
 
+    /**
+     * Creates request message with the given method and request path.
+     *
+     * @param method request method.
+     * @param path request path.
+     *
+     * @since 5.0
+     */
+    public BasicHttpRequest(final Methods method, final String path) {
+        super();
+        this.method = Args.notNull(method, "Method").name();
+        if (path != null) {
+            try {
+                setUri(new URI(path));
+            } catch (final URISyntaxException ex) {
+                this.path = path;
+            }
+        }
+    }
+
+    /**
+     * Creates request message with the given method, host and request path.
+     *
+     * @param method request method.
+     * @param host request host.
+     * @param path request path.
+     *
+     * @since 5.0
+     */
+    public BasicHttpRequest(final Methods method, final HttpHost host, final String path) {
+        super();
+        this.method = Args.notNull(method, "Method").name();
+        this.scheme = host != null ? host.getSchemeName() : null;
+        this.authority = host != null ? new URIAuthority(host) : null;
+        this.path = path;
+    }
+
+    /**
+     * Creates request message with the given method, request URI.
+     *
+     * @param method request method.
+     * @param requestUri request URI.
+     *
+     * @since 5.0
+     */
+    public BasicHttpRequest(final Methods method, final URI requestUri) {
+        super();
+        this.method = Args.notNull(method, "Method").name();
+        setUri(Args.notNull(requestUri, "Request URI"));
+    }
+
     @Override
     public void addHeader(final String name, final Object value) {
         Args.notNull(name, "Header name");
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java b/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java
index faa2ac6..1f78f6d 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java
@@ -42,6 +42,7 @@ import org.apache.hc.core5.http.HttpMessage;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.MessageHeaders;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.util.Args;
 import org.apache.hc.core5.util.CharArrayBuffer;
 import org.apache.hc.core5.util.TextUtils;
@@ -174,11 +175,11 @@ public class MessageSupport {
      * @since  5.0
      */
     public static boolean canResponseHaveBody(final String method, final HttpResponse response) {
-        if ("HEAD".equalsIgnoreCase(method)) {
+        if (Methods.HEAD.isSame(method)) {
             return false;
         }
         final int status = response.getCode();
-        if ("CONNECT".equalsIgnoreCase(method) && status == HttpStatus.SC_OK) {
+        if (Methods.CONNECT.isSame(method) && status == HttpStatus.SC_OK) {
             return false;
         }
         return status >= HttpStatus.SC_SUCCESS
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/BasicRequestProducer.java b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/BasicRequestProducer.java
index fed369e..28cde62 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/BasicRequestProducer.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/BasicRequestProducer.java
@@ -32,6 +32,7 @@ import java.net.URI;
 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.Methods;
 import org.apache.hc.core5.http.message.BasicHttpRequest;
 import org.apache.hc.core5.http.protocol.HttpContext;
 
@@ -67,6 +68,22 @@ public class BasicRequestProducer implements AsyncRequestProducer {
         this(method, requestUri, null);
     }
 
+    public BasicRequestProducer(final Methods method, final HttpHost host, final String path, final AsyncEntityProducer dataProducer) {
+        this(new BasicHttpRequest(method, host, path), dataProducer);
+    }
+
+    public BasicRequestProducer(final Methods method, final HttpHost host, final String path) {
+        this(method, host, path, null);
+    }
+
+    public BasicRequestProducer(final Methods method, final URI requestUri, final AsyncEntityProducer dataProducer) {
+        this(new BasicHttpRequest(method, requestUri), dataProducer);
+    }
+
+    public BasicRequestProducer(final Methods method, final URI requestUri) {
+        this(method, requestUri, null);
+    }
+
     @Override
     public void sendRequest(final RequestChannel requestChannel, final HttpContext httpContext) throws HttpException, IOException {
         requestChannel.sendRequest(request, dataProducer, httpContext);
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestConnControl.java b/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestConnControl.java
index 45d9f72..5340f55 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestConnControl.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestConnControl.java
@@ -37,6 +37,7 @@ import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpHeaders;
 import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpRequestInterceptor;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.util.Args;
 
 /**
@@ -60,7 +61,7 @@ public class RequestConnControl implements HttpRequestInterceptor {
         Args.notNull(request, "HTTP request");
 
         final String method = request.getMethod();
-        if (method.equalsIgnoreCase("CONNECT")) {
+        if (Methods.CONNECT.isSame(method)) {
             return;
         }
 
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestTargetHost.java b/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestTargetHost.java
index 87f957e..81bf5b1 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestTargetHost.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestTargetHost.java
@@ -37,6 +37,7 @@ import org.apache.hc.core5.http.HttpHeaders;
 import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpRequestInterceptor;
 import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.http.ProtocolVersion;
 import org.apache.hc.core5.net.URIAuthority;
@@ -63,7 +64,7 @@ public class RequestTargetHost implements HttpRequestInterceptor {
 
         final ProtocolVersion ver = context.getProtocolVersion();
         final String method = request.getMethod();
-        if (method.equalsIgnoreCase("CONNECT") && ver.lessEquals(HttpVersion.HTTP_1_0)) {
+        if (Methods.CONNECT.isSame(method) && ver.lessEquals(HttpVersion.HTTP_1_0)) {
             return;
         }
 
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncFullDuplexClientExample.java b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncFullDuplexClientExample.java
index f79ee9e..f8b70ad 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncFullDuplexClientExample.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncFullDuplexClientExample.java
@@ -42,6 +42,7 @@ import org.apache.hc.core5.http.HttpHeaders;
 import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpRequestInterceptor;
 import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.Http1StreamListener;
 import org.apache.hc.core5.http.impl.HttpProcessors;
 import org.apache.hc.core5.http.impl.bootstrap.AsyncRequesterBootstrap;
@@ -122,7 +123,7 @@ public class AsyncFullDuplexClientExample {
 
         final URI requestUri = new URI("http://httpbin.org/post");
         final BasicRequestProducer requestProducer = new BasicRequestProducer(
-                "POST", requestUri, new BasicAsyncEntityProducer("stuff", ContentType.TEXT_PLAIN));
+                Methods.POST.name(), requestUri, new BasicAsyncEntityProducer("stuff", ContentType.TEXT_PLAIN));
         final BasicResponseConsumer<String> responseConsumer = new BasicResponseConsumer<>(
                 new StringAsyncEntityConsumer());
 
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncPipelinedRequestExecutionExample.java b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncPipelinedRequestExecutionExample.java
index b25abb4..9517bf0 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncPipelinedRequestExecutionExample.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncPipelinedRequestExecutionExample.java
@@ -36,6 +36,7 @@ import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.Http1StreamListener;
 import org.apache.hc.core5.http.impl.bootstrap.AsyncRequesterBootstrap;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
@@ -106,7 +107,7 @@ public class AsyncPipelinedRequestExecutionExample {
         final CountDownLatch latch = new CountDownLatch(requestUris.length);
         for (final String requestUri: requestUris) {
             clientEndpoint.execute(
-                    new BasicRequestProducer("GET", target, requestUri),
+                    new BasicRequestProducer(Methods.GET, target, requestUri),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()),
                     new FutureCallback<Message<HttpResponse, String>>() {
 
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncRequestExecutionExample.java b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncRequestExecutionExample.java
index b863d82..7e3b392 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncRequestExecutionExample.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/AsyncRequestExecutionExample.java
@@ -35,6 +35,7 @@ import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.Message;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.Http1StreamListener;
 import org.apache.hc.core5.http.impl.bootstrap.AsyncRequesterBootstrap;
 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
@@ -100,7 +101,7 @@ public class AsyncRequestExecutionExample {
         final CountDownLatch latch = new CountDownLatch(requestUris.length);
         for (final String requestUri: requestUris) {
             requester.execute(
-                    new BasicRequestProducer("GET", target, requestUri),
+                    new BasicRequestProducer(Methods.GET, target, requestUri),
                     new BasicResponseConsumer<>(new StringAsyncEntityConsumer()),
                     Timeout.ofSeconds(5),
                     new FutureCallback<Message<HttpResponse, String>>() {
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicFileServerExample.java b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicFileServerExample.java
index 646214d..90f1770 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicFileServerExample.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicFileServerExample.java
@@ -33,7 +33,6 @@ import java.net.SocketTimeoutException;
 import java.net.URL;
 import java.net.URLDecoder;
 import java.nio.charset.Charset;
-import java.util.Locale;
 import java.util.concurrent.TimeUnit;
 
 import javax.net.ssl.SSLContext;
@@ -49,10 +48,11 @@ import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.MethodNotSupportedException;
-import org.apache.hc.core5.http.io.SocketConfig;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.bootstrap.HttpServer;
 import org.apache.hc.core5.http.impl.bootstrap.ServerBootstrap;
 import org.apache.hc.core5.http.io.HttpRequestHandler;
+import org.apache.hc.core5.http.io.SocketConfig;
 import org.apache.hc.core5.http.io.entity.EntityUtils;
 import org.apache.hc.core5.http.io.entity.FileEntity;
 import org.apache.hc.core5.http.io.entity.StringEntity;
@@ -151,8 +151,8 @@ public class ClassicFileServerExample {
                 final ClassicHttpResponse response,
                 final HttpContext context) throws HttpException, IOException {
 
-            final String method = request.getMethod().toUpperCase(Locale.ROOT);
-            if (!method.equals("GET") && !method.equals("HEAD") && !method.equals("POST")) {
+            final String method = request.getMethod();
+            if (!Methods.GET.isSame(method) && !Methods.HEAD.isSame(method) && !Methods.POST.isSame(method)) {
                 throw new MethodNotSupportedException(method + " method not supported");
             }
             final String path = request.getPath();
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicGetExecutionExample.java b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicGetExecutionExample.java
index 06fb274..a4e8f43 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicGetExecutionExample.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicGetExecutionExample.java
@@ -35,6 +35,7 @@ import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.Http1StreamListener;
 import org.apache.hc.core5.http.impl.bootstrap.HttpRequester;
 import org.apache.hc.core5.http.impl.bootstrap.RequesterBootstrap;
@@ -87,7 +88,7 @@ public class ClassicGetExecutionExample {
 
         for (int i = 0; i < requestUris.length; i++) {
             final String requestUri = requestUris[i];
-            final ClassicHttpRequest request = new BasicClassicHttpRequest("GET", target, requestUri);
+            final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, target, requestUri);
             try (ClassicHttpResponse response = httpRequester.execute(target, request, Timeout.ofSeconds(5), coreContext)) {
                 System.out.println(requestUri + "->" + response.getCode());
                 System.out.println(EntityUtils.toString(response.getEntity()));
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicPostExecutionExample.java b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicPostExecutionExample.java
index 2814fda..4b33caf 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicPostExecutionExample.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicPostExecutionExample.java
@@ -39,6 +39,7 @@ import org.apache.hc.core5.http.HttpEntity;
 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.Methods;
 import org.apache.hc.core5.http.impl.Http1StreamListener;
 import org.apache.hc.core5.http.impl.bootstrap.HttpRequester;
 import org.apache.hc.core5.http.impl.bootstrap.RequesterBootstrap;
@@ -106,7 +107,7 @@ public class ClassicPostExecutionExample {
 
         final String requestUri = "/post";
         for (int i = 0; i < requestBodies.length; i++) {
-            final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", target,requestUri);
+            final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, target,requestUri);
             request.setEntity(requestBodies[i]);
             try (ClassicHttpResponse response = httpRequester.execute(target, request, Timeout.ofSeconds(5), coreContext)) {
                 System.out.println(requestUri + "->" + response.getCode());
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicPostWithTrailersExecutionExample.java b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicPostWithTrailersExecutionExample.java
index 73a31c4..7bb487b 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicPostWithTrailersExecutionExample.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/examples/ClassicPostWithTrailersExecutionExample.java
@@ -34,6 +34,7 @@ import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ContentType;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.impl.bootstrap.HttpRequester;
 import org.apache.hc.core5.http.impl.bootstrap.RequesterBootstrap;
 import org.apache.hc.core5.http.io.SocketConfig;
@@ -60,7 +61,7 @@ public class ClassicPostWithTrailersExecutionExample {
         final HttpHost target = new HttpHost("httpbin.org");
 
         final String requestUri = "/post";
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", target, requestUri);
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, target, requestUri);
         final HttpEntity requestBody = new HttpEntityWithTrailers(
                 new StringEntity("Chunked message with trailers", ContentType.TEXT_PLAIN),
                 new BasicHeader("t1","Hello world"));
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/TestDefaultConnectionReuseStrategy.java b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/TestDefaultConnectionReuseStrategy.java
index fcc3bd7..54325d1 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/TestDefaultConnectionReuseStrategy.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/TestDefaultConnectionReuseStrategy.java
@@ -32,6 +32,7 @@ import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.message.BasicHttpRequest;
 import org.apache.hc.core5.http.message.BasicHttpResponse;
 import org.apache.hc.core5.http.protocol.BasicHttpContext;
@@ -231,7 +232,7 @@ public class TestDefaultConnectionReuseStrategy {
 
     @Test
     public void testRequestExplicitClose() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", "/");
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, "/");
         request.addHeader("Connection", "close");
 
         final HttpResponse response = new BasicHttpResponse(200, "OK");
@@ -242,7 +243,7 @@ public class TestDefaultConnectionReuseStrategy {
 
     @Test
     public void testRequestNoExplicitClose() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", "/");
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, "/");
         request.addHeader("Connection", "blah, blah, blah");
 
         final HttpResponse response = new BasicHttpResponse(200, "OK");
@@ -253,7 +254,7 @@ public class TestDefaultConnectionReuseStrategy {
 
     @Test
     public void testRequestExplicitCloseMultipleTokens() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", "/");
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, "/");
         request.addHeader("Connection", "blah, blah, blah");
         request.addHeader("Connection", "keep-alive");
         request.addHeader("Connection", "close");
@@ -266,7 +267,7 @@ public class TestDefaultConnectionReuseStrategy {
 
     @Test
     public void testRequestClose() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", "/");
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, "/");
         request.addHeader("Connection", "close");
 
         final HttpResponse response = new BasicHttpResponse(200, "OK");
@@ -278,7 +279,7 @@ public class TestDefaultConnectionReuseStrategy {
 
     @Test
     public void testHeadRequestWithout() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("HEAD", "/");
+        final HttpRequest request = new BasicHttpRequest(Methods.HEAD, "/");
         final HttpResponse response = new BasicHttpResponse(200, "OK");
 
         Assert.assertTrue(reuseStrategy.keepAlive(request, response, context));
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestDefaultBHttpClientConnection.java b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestDefaultBHttpClientConnection.java
index 16e91eb..57664fd 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestDefaultBHttpClientConnection.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestDefaultBHttpClientConnection.java
@@ -37,6 +37,7 @@ import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ContentType;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.LengthRequiredException;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.NotImplementedException;
 import org.apache.hc.core5.http.config.H1Config;
 import org.apache.hc.core5.http.impl.DefaultContentLengthStrategy;
@@ -236,7 +237,7 @@ public class TestDefaultBHttpClientConnection {
 
         Assert.assertEquals(0, conn.getEndpointDetails().getRequestCount());
 
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/stuff");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/stuff");
         request.addHeader("User-Agent", "test");
 
         conn.sendRequestHeader(request);
@@ -256,7 +257,7 @@ public class TestDefaultBHttpClientConnection {
 
         Assert.assertEquals(0, conn.getEndpointDetails().getRequestCount());
 
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request.addHeader("User-Agent", "test");
         request.addHeader("Content-Length", "3");
         request.setEntity(new StringEntity("123", ContentType.TEXT_PLAIN));
@@ -279,7 +280,7 @@ public class TestDefaultBHttpClientConnection {
 
         Assert.assertEquals(0, conn.getEndpointDetails().getRequestCount());
 
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request.addHeader("User-Agent", "test");
         request.addHeader("Transfer-Encoding", "chunked");
         request.setEntity(new StringEntity("123", ContentType.TEXT_PLAIN));
@@ -303,7 +304,7 @@ public class TestDefaultBHttpClientConnection {
 
         Assert.assertEquals(0, conn.getEndpointDetails().getRequestCount());
 
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request.addHeader("User-Agent", "test");
         request.setEntity(new StringEntity("123", ContentType.TEXT_PLAIN));
 
@@ -320,7 +321,7 @@ public class TestDefaultBHttpClientConnection {
 
         Assert.assertEquals(0, conn.getEndpointDetails().getRequestCount());
 
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request.addHeader("User-Agent", "test");
 
         conn.sendRequestHeader(request);
@@ -341,7 +342,7 @@ public class TestDefaultBHttpClientConnection {
 
         Assert.assertEquals(0, conn.getEndpointDetails().getRequestCount());
 
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request.addHeader("User-Agent", "test");
         request.addHeader("Transfer-Encoding", "chunked");
         final StringEntity entity = new StringEntity("123", ContentType.TEXT_PLAIN, true);
@@ -368,7 +369,7 @@ public class TestDefaultBHttpClientConnection {
 
         Assert.assertEquals(0, conn.getEndpointDetails().getRequestCount());
 
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request.addHeader("User-Agent", "test");
         request.addHeader("Content-Length", "3");
         final StringEntity entity = new StringEntity("123", ContentType.TEXT_PLAIN, true);
@@ -394,7 +395,7 @@ public class TestDefaultBHttpClientConnection {
 
         Assert.assertEquals(0, conn.getEndpointDetails().getRequestCount());
 
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/stuff");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/stuff");
         request.addHeader("User-Agent", "test");
         request.addHeader("Content-Length", "3000");
         final ByteArrayEntity entity = new ByteArrayEntity(new byte[3000], ContentType.TEXT_PLAIN, true);
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestDefaultBHttpServerConnection.java b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestDefaultBHttpServerConnection.java
index 7ddce42..a20a076 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestDefaultBHttpServerConnection.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestDefaultBHttpServerConnection.java
@@ -36,6 +36,7 @@ import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ContentType;
 import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.NotImplementedException;
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.http.config.H1Config;
@@ -86,7 +87,7 @@ public class TestDefaultBHttpServerConnection {
         final ClassicHttpRequest request = conn.receiveRequestHeader();
         Assert.assertNotNull(request);
         Assert.assertEquals("/", request.getPath());
-        Assert.assertEquals("GET", request.getMethod());
+        Assert.assertEquals(Methods.GET.name(), request.getMethod());
         Assert.assertTrue(request.containsHeader("User-Agent"));
         Assert.assertEquals(1, conn.getEndpointDetails().getRequestCount());
     }
@@ -105,7 +106,7 @@ public class TestDefaultBHttpServerConnection {
 
         Assert.assertNotNull(request);
         Assert.assertEquals("/", request.getPath());
-        Assert.assertEquals("POST", request.getMethod());
+        Assert.assertEquals(Methods.POST.name(), request.getMethod());
         Assert.assertTrue(request.containsHeader("User-Agent"));
         Assert.assertNull(request.getEntity());
         Assert.assertEquals(1, conn.getEndpointDetails().getRequestCount());
@@ -136,7 +137,7 @@ public class TestDefaultBHttpServerConnection {
 
         Assert.assertNotNull(request);
         Assert.assertEquals("/stuff", request.getPath());
-        Assert.assertEquals("POST", request.getMethod());
+        Assert.assertEquals(Methods.POST.name(), request.getMethod());
         Assert.assertTrue(request.containsHeader("User-Agent"));
         Assert.assertNull(request.getEntity());
         Assert.assertEquals(1, conn.getEndpointDetails().getRequestCount());
@@ -168,7 +169,7 @@ public class TestDefaultBHttpServerConnection {
 
         Assert.assertNotNull(request);
         Assert.assertEquals("/stuff", request.getPath());
-        Assert.assertEquals("POST", request.getMethod());
+        Assert.assertEquals(Methods.POST.name(), request.getMethod());
         Assert.assertTrue(request.containsHeader("User-Agent"));
         Assert.assertNull(request.getEntity());
         Assert.assertEquals(1, conn.getEndpointDetails().getRequestCount());
@@ -190,7 +191,7 @@ public class TestDefaultBHttpServerConnection {
 
         Assert.assertNotNull(request);
         Assert.assertEquals("/stuff", request.getPath());
-        Assert.assertEquals("POST", request.getMethod());
+        Assert.assertEquals(Methods.POST.name(), request.getMethod());
         Assert.assertTrue(request.containsHeader("User-Agent"));
         Assert.assertNull(request.getEntity());
         Assert.assertEquals(1, conn.getEndpointDetails().getRequestCount());
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestHttpRequestExecutor.java b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestHttpRequestExecutor.java
index 5bb06aa..e5e0348 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestHttpRequestExecutor.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestHttpRequestExecutor.java
@@ -36,6 +36,7 @@ import org.apache.hc.core5.http.HeaderElements;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpHeaders;
 import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.io.HttpClientConnection;
 import org.apache.hc.core5.http.io.HttpResponseInformationCallback;
 import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
@@ -53,7 +54,7 @@ public class TestHttpRequestExecutor {
     @Test
     public void testInvalidInput() throws Exception {
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         final ClassicHttpResponse response = new BasicClassicHttpResponse(200, "OK");
         final HttpClientConnection conn = Mockito.mock(HttpClientConnection.class);
         final HttpProcessor httprocessor = Mockito.mock(HttpProcessor.class);
@@ -122,7 +123,7 @@ public class TestHttpRequestExecutor {
         final HttpRequestExecutor executor = new HttpRequestExecutor();
 
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
 
         executor.preProcess(request, httprocessor, context);
         Mockito.verify(httprocessor).process(request, request.getEntity(), context);
@@ -150,7 +151,7 @@ public class TestHttpRequestExecutor {
         final HttpRequestExecutor executor = new HttpRequestExecutor();
 
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
 
         executor.preProcess(request, httprocessor, context);
         Mockito.verify(httprocessor).process(request, request.getEntity(), context);
@@ -195,7 +196,7 @@ public class TestHttpRequestExecutor {
         final HttpRequestExecutor executor = new HttpRequestExecutor();
 
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
 
         executor.preProcess(request, httprocessor, context);
         Mockito.verify(httprocessor).process(request, request.getEntity(), context);
@@ -220,7 +221,7 @@ public class TestHttpRequestExecutor {
         final HttpRequestExecutor executor = new HttpRequestExecutor();
 
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("HEAD", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.HEAD, "/");
 
         executor.preProcess(request, httprocessor, context);
         Mockito.verify(httprocessor).process(request, request.getEntity(), context);
@@ -245,7 +246,7 @@ public class TestHttpRequestExecutor {
         final HttpRequestExecutor executor = new HttpRequestExecutor();
 
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         final HttpEntity entity = Mockito.mock(HttpEntity.class);
         request.setEntity(entity);
 
@@ -273,7 +274,7 @@ public class TestHttpRequestExecutor {
         final HttpRequestExecutor executor = new HttpRequestExecutor();
 
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.addHeader(HttpHeaders.EXPECT, HeaderElements.CONTINUE);
         final HttpEntity entity = Mockito.mock(HttpEntity.class);
         request.setEntity(entity);
@@ -305,7 +306,7 @@ public class TestHttpRequestExecutor {
         final HttpRequestExecutor executor = new HttpRequestExecutor();
 
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.addHeader(HttpHeaders.EXPECT, HeaderElements.CONTINUE);
         final HttpEntity entity = Mockito.mock(HttpEntity.class);
         request.setEntity(entity);
@@ -337,7 +338,7 @@ public class TestHttpRequestExecutor {
         final HttpRequestExecutor executor = new HttpRequestExecutor();
 
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.addHeader(HttpHeaders.EXPECT, HeaderElements.CONTINUE);
         final HttpEntity entity = Mockito.mock(HttpEntity.class);
         request.setEntity(entity);
@@ -385,7 +386,7 @@ public class TestHttpRequestExecutor {
         final HttpRequestExecutor executor = new HttpRequestExecutor();
 
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.addHeader(HttpHeaders.EXPECT, HeaderElements.CONTINUE);
         final HttpEntity entity = Mockito.mock(HttpEntity.class);
         request.setEntity(entity);
@@ -415,7 +416,7 @@ public class TestHttpRequestExecutor {
         final HttpRequestExecutor executor = new HttpRequestExecutor();
 
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
 
         Mockito.doThrow(new IOException("Oopsie")).when(conn).sendRequestHeader(request);
         try {
@@ -432,7 +433,7 @@ public class TestHttpRequestExecutor {
         final HttpRequestExecutor executor = new HttpRequestExecutor();
 
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
 
         Mockito.doThrow(new RuntimeException("Oopsie")).when(conn).receiveResponseHeader();
         try {
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestHttpService.java b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestHttpService.java
index ff9e44c..6e48a54 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestHttpService.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestHttpService.java
@@ -42,6 +42,7 @@ import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpResponseFactory;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.MethodNotSupportedException;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.http.UnsupportedHttpVersionException;
 import org.apache.hc.core5.http.io.HttpRequestHandler;
@@ -108,7 +109,7 @@ public class TestHttpService {
     @Test
     public void testBasicExecution() throws Exception {
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         Mockito.when(conn.receiveRequestHeader()).thenReturn(request);
         Mockito.when(responseFactory.newHttpResponse(200)).thenReturn(response);
         Mockito.when(connReuseStrategy.keepAlive(request, response, context)).thenReturn(Boolean.FALSE);
@@ -132,7 +133,7 @@ public class TestHttpService {
     @Test
     public void testExecutionEntityEnclosingRequest() throws Exception {
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         final InputStream inStream = Mockito.mock(InputStream.class);
         final InputStreamEntity entity = new InputStreamEntity(inStream, -1, null);
         request.setEntity(entity);
@@ -171,7 +172,7 @@ public class TestHttpService {
     @Test
     public void testExecutionEntityEnclosingRequestWithExpectContinue() throws Exception {
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.addHeader(HttpHeaders.EXPECT, HeaderElements.CONTINUE);
         final InputStream inStream = Mockito.mock(InputStream.class);
         final InputStreamEntity entity = new InputStreamEntity(inStream, -1, null);
@@ -296,7 +297,7 @@ public class TestHttpService {
     @Test
     public void testConnectionKeepAlive() throws Exception {
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         Mockito.when(conn.receiveRequestHeader()).thenReturn(request);
         Mockito.when(responseFactory.newHttpResponse(200)).thenReturn(response);
         Mockito.when(handlerResolver.resolve(request, context)).thenReturn(requestHandler);
@@ -321,7 +322,7 @@ public class TestHttpService {
     @Test
     public void testNoContentResponse() throws Exception {
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
 
         Mockito.when(conn.receiveRequestHeader()).thenReturn(request);
         Mockito.when(responseFactory.newHttpResponse(200)).thenReturn(response);
@@ -353,7 +354,7 @@ public class TestHttpService {
     @Test
     public void testResponseToHead() throws Exception {
         final HttpCoreContext context = HttpCoreContext.create();
-        final ClassicHttpRequest request = new BasicClassicHttpRequest("HEAD", "/");
+        final ClassicHttpRequest request = new BasicClassicHttpRequest(Methods.HEAD, "/");
 
         Mockito.when(conn.receiveRequestHeader()).thenReturn(request);
         Mockito.when(responseFactory.newHttpResponse(200)).thenReturn(response);
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestRequestParser.java b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestRequestParser.java
index 3343948..00d3c99 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestRequestParser.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestRequestParser.java
@@ -34,6 +34,7 @@ import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ConnectionClosedException;
 import org.apache.hc.core5.http.Header;
 import org.apache.hc.core5.http.MessageConstraintException;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.config.H1Config;
 import org.apache.hc.core5.http.io.SessionInputBuffer;
 import org.junit.Assert;
@@ -58,7 +59,7 @@ public class TestRequestParser {
         final DefaultHttpRequestParser parser = new DefaultHttpRequestParser();
         final ClassicHttpRequest httprequest = parser.parse(inBuffer, inputStream);
 
-        Assert.assertEquals("GET", httprequest.getMethod());
+        Assert.assertEquals(Methods.GET.name(), httprequest.getMethod());
         Assert.assertEquals("/", httprequest.getPath());
         final Header[] headers = httprequest.getHeaders();
         Assert.assertEquals(3, headers.length);
@@ -88,7 +89,7 @@ public class TestRequestParser {
                 H1Config.custom().setMaxEmptyLineCount(3).build());
         final ClassicHttpRequest httprequest = parser.parse(inBuffer, inputStream);
 
-        Assert.assertEquals("GET", httprequest.getMethod());
+        Assert.assertEquals(Methods.GET.name(), httprequest.getMethod());
         Assert.assertEquals("/", httprequest.getPath());
         final Header[] headers = httprequest.getHeaders();
         Assert.assertEquals(1, headers.length);
@@ -139,7 +140,7 @@ public class TestRequestParser {
         Assert.assertNotNull(httprequest);
         Assert.assertEquals(5, timeoutCount);
 
-        Assert.assertEquals("GET", httprequest.getMethod());
+        Assert.assertEquals(Methods.GET.name(), httprequest.getMethod());
         Assert.assertEquals("/", httprequest.getPath());
         final Header[] headers = httprequest.getHeaders();
         Assert.assertEquals(3, headers.length);
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestIdentityEncoder.java b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestIdentityEncoder.java
index fcba011..0ac5d0c 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestIdentityEncoder.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestIdentityEncoder.java
@@ -34,6 +34,7 @@ import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
 import java.nio.charset.StandardCharsets;
 
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.WritableByteChannelMock;
 import org.apache.hc.core5.http.impl.BasicHttpTransportMetrics;
 import org.apache.hc.core5.http.nio.SessionOutputBuffer;
@@ -303,7 +304,7 @@ public class TestIdentityEncoder {
         final String s = channel.dump(StandardCharsets.US_ASCII);
 
         Assert.assertFalse(encoder.isCompleted());
-        Assert.assertEquals("head", s);
+        Assert.assertEquals(Methods.HEAD.name(), s);
     }
 
     @Test
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestLengthDelimitedEncoder.java b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestLengthDelimitedEncoder.java
index 248eaac..b1b8d1d 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestLengthDelimitedEncoder.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestLengthDelimitedEncoder.java
@@ -34,6 +34,7 @@ import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
 import java.nio.charset.StandardCharsets;
 
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.WritableByteChannelMock;
 import org.apache.hc.core5.http.impl.BasicHttpTransportMetrics;
 import org.apache.hc.core5.http.nio.SessionOutputBuffer;
@@ -361,7 +362,7 @@ public class TestLengthDelimitedEncoder {
         final String s = channel.dump(StandardCharsets.US_ASCII);
 
         Assert.assertFalse(encoder.isCompleted());
-        Assert.assertEquals("head", s);
+        Assert.assertEquals(Methods.HEAD.name(), s);
     }
 
     @Test
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicLineFormatter.java b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicLineFormatter.java
index f26036f..ccadccf 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicLineFormatter.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicLineFormatter.java
@@ -30,6 +30,7 @@ package org.apache.hc.core5.http.message;
 import org.apache.hc.core5.http.Header;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.util.CharArrayBuffer;
 import org.junit.Assert;
 import org.junit.Before;
@@ -56,7 +57,7 @@ public class TestBasicLineFormatter {
 
     @Test
     public void testRLFormatting() throws Exception {
-        final RequestLine requestline = new RequestLine("GET", "/stuff", HttpVersion.HTTP_1_1);
+        final RequestLine requestline = new RequestLine(Methods.GET.name(), "/stuff", HttpVersion.HTTP_1_1);
         final CharArrayBuffer buf = new CharArrayBuffer(64);
         this.formatter.formatRequestLine(buf, requestline);
         Assert.assertEquals("GET /stuff HTTP/1.1", buf.toString());
@@ -65,7 +66,7 @@ public class TestBasicLineFormatter {
     @Test
     public void testRLFormattingInvalidInput() throws Exception {
         final CharArrayBuffer buf = new CharArrayBuffer(64);
-        final RequestLine requestline = new RequestLine("GET", "/stuff", HttpVersion.HTTP_1_1);
+        final RequestLine requestline = new RequestLine(Methods.GET.name(), "/stuff", HttpVersion.HTTP_1_1);
         try {
             this.formatter.formatRequestLine(null, requestline);
             Assert.fail("IllegalArgumentException should habe been thrown");
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicLineParser.java b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicLineParser.java
index 03356b8..44ab2d8 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicLineParser.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicLineParser.java
@@ -29,6 +29,7 @@ package org.apache.hc.core5.http.message;
 
 import org.apache.hc.core5.http.Header;
 import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.ParseException;
 import org.apache.hc.core5.util.CharArrayBuffer;
 import org.junit.Assert;
@@ -56,7 +57,7 @@ public class TestBasicLineParser {
         buf.append("GET /stuff HTTP/1.1");
         RequestLine requestline = this.parser.parseRequestLine(buf);
         Assert.assertEquals("GET /stuff HTTP/1.1", requestline.toString());
-        Assert.assertEquals("GET", requestline.getMethod());
+        Assert.assertEquals(Methods.GET.name(), requestline.getMethod());
         Assert.assertEquals("/stuff", requestline.getUri());
         Assert.assertEquals(HttpVersion.HTTP_1_1, requestline.getProtocolVersion());
 
@@ -65,7 +66,7 @@ public class TestBasicLineParser {
         buf.append("  GET    /stuff   HTTP/1.1   ");
         requestline = this.parser.parseRequestLine(buf);
         Assert.assertEquals("GET /stuff HTTP/1.1", requestline.toString());
-        Assert.assertEquals("GET", requestline.getMethod());
+        Assert.assertEquals(Methods.GET.name(), requestline.getMethod());
         Assert.assertEquals("/stuff", requestline.getUri());
         Assert.assertEquals(HttpVersion.HTTP_1_1, requestline.getProtocolVersion());
 
@@ -73,7 +74,7 @@ public class TestBasicLineParser {
         buf.clear();
         buf.append("\rGET /stuff HTTP/1.1");
         requestline = this.parser.parseRequestLine(buf);
-        Assert.assertEquals("GET", requestline.getMethod());
+        Assert.assertEquals(Methods.GET.name(), requestline.getMethod());
         Assert.assertEquals("/stuff", requestline.getUri());
         Assert.assertEquals(HttpVersion.HTTP_1_1, requestline.getProtocolVersion());
     }
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
index 997fd5b..def89ef 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
@@ -33,6 +33,7 @@ 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.HttpStatus;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.net.URIAuthority;
 import org.junit.Assert;
 import org.junit.Test;
@@ -81,12 +82,12 @@ public class TestBasicMessages {
         Assert.assertEquals("WHATEVER", request.getMethod());
         Assert.assertEquals("/", request.getPath());
 
-        request = new BasicHttpRequest("GET", "/");
-        Assert.assertEquals("GET", request.getMethod());
+        request = new BasicHttpRequest(Methods.GET, "/");
+        Assert.assertEquals(Methods.GET.name(), request.getMethod());
         Assert.assertEquals("/", request.getPath());
 
         try {
-            new BasicHttpRequest("GET", (URI) null);
+            new BasicHttpRequest(Methods.GET, (URI) null);
             Assert.fail("IllegalArgumentException should have been thrown");
         } catch (final IllegalArgumentException ex) {
             // expected
@@ -130,8 +131,8 @@ public class TestBasicMessages {
 
     @Test
     public void testRequestBasics() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", "/stuff");
-        Assert.assertEquals("GET", request.getMethod());
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, "/stuff");
+        Assert.assertEquals(Methods.GET.name(), request.getMethod());
         Assert.assertEquals("/stuff", request.getPath());
         Assert.assertEquals(null, request.getAuthority());
         Assert.assertEquals(new URI("/stuff"), request.getUri());
@@ -139,8 +140,8 @@ public class TestBasicMessages {
 
     @Test
     public void testRequestWithRelativeURI() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", new URI("/stuff"));
-        Assert.assertEquals("GET", request.getMethod());
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, new URI("/stuff"));
+        Assert.assertEquals(Methods.GET.name(), request.getMethod());
         Assert.assertEquals("/stuff", request.getPath());
         Assert.assertEquals(null, request.getAuthority());
         Assert.assertEquals(new URI("/stuff"), request.getUri());
@@ -148,8 +149,8 @@ public class TestBasicMessages {
 
     @Test
     public void testRequestWithAbsoluteURI() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", new URI("https://host:9443/stuff?param=value"));
-        Assert.assertEquals("GET", request.getMethod());
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, new URI("https://host:9443/stuff?param=value"));
+        Assert.assertEquals(Methods.GET.name(), request.getMethod());
         Assert.assertEquals("/stuff?param=value", request.getPath());
         Assert.assertEquals(new URIAuthority("host", 9443), request.getAuthority());
         Assert.assertEquals("https", request.getScheme());
@@ -158,8 +159,8 @@ public class TestBasicMessages {
 
     @Test
     public void testRequestWithAbsoluteURIAsPath() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", "https://host:9443/stuff?param=value");
-        Assert.assertEquals("GET", request.getMethod());
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, "https://host:9443/stuff?param=value");
+        Assert.assertEquals(Methods.GET.name(), request.getMethod());
         Assert.assertEquals("/stuff?param=value", request.getPath());
         Assert.assertEquals(new URIAuthority("host", 9443), request.getAuthority());
         Assert.assertEquals("https", request.getScheme());
@@ -168,8 +169,8 @@ public class TestBasicMessages {
 
     @Test
     public void testRequestWithNoPath() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", new URI("http://host"));
-        Assert.assertEquals("GET", request.getMethod());
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, new URI("http://host"));
+        Assert.assertEquals(Methods.GET.name(), request.getMethod());
         Assert.assertEquals("/", request.getPath());
         Assert.assertEquals(new URIAuthority("host"), request.getAuthority());
         Assert.assertEquals("http", request.getScheme());
@@ -178,8 +179,8 @@ public class TestBasicMessages {
 
     @Test
     public void testRequestWithUserInfo() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", new URI("https://user:pwd@host:9443/stuff?param=value"));
-        Assert.assertEquals("GET", request.getMethod());
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, new URI("https://user:pwd@host:9443/stuff?param=value"));
+        Assert.assertEquals(Methods.GET.name(), request.getMethod());
         Assert.assertEquals("/stuff?param=value", request.getPath());
         Assert.assertEquals(new URIAuthority("user:pwd", "host", 9443), request.getAuthority());
         Assert.assertEquals("https", request.getScheme());
@@ -188,8 +189,8 @@ public class TestBasicMessages {
 
     @Test
     public void testRequestWithAuthority() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", new HttpHost("http", "somehost", -1), "/stuff");
-        Assert.assertEquals("GET", request.getMethod());
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, new HttpHost("http", "somehost", -1), "/stuff");
+        Assert.assertEquals(Methods.GET.name(), request.getMethod());
         Assert.assertEquals("/stuff", request.getPath());
         Assert.assertEquals(new URIAuthority("somehost"), request.getAuthority());
         Assert.assertEquals(new URI("http://somehost/stuff"), request.getUri());
@@ -197,8 +198,8 @@ public class TestBasicMessages {
 
     @Test
     public void testRequestWithAuthorityRelativePath() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", new HttpHost("http", "somehost", -1), "stuff");
-        Assert.assertEquals("GET", request.getMethod());
+        final HttpRequest request = new BasicHttpRequest(Methods.GET, new HttpHost("http", "somehost", -1), "stuff");
+        Assert.assertEquals(Methods.GET.name(), request.getMethod());
         Assert.assertEquals("stuff", request.getPath());
         Assert.assertEquals(new URIAuthority("somehost"), request.getAuthority());
         Assert.assertEquals(new URI("http://somehost/stuff"), request.getUri());
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/protocol/TestRequestHandlerRegistry.java b/httpcore5/src/test/java/org/apache/hc/core5/http/protocol/TestRequestHandlerRegistry.java
index 943a69c..b603da9 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/protocol/TestRequestHandlerRegistry.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/protocol/TestRequestHandlerRegistry.java
@@ -29,6 +29,7 @@ package org.apache.hc.core5.http.protocol;
 
 import org.apache.hc.core5.function.Supplier;
 import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.MisdirectedRequestException;
 import org.apache.hc.core5.http.message.BasicHttpRequest;
 import org.junit.Assert;
@@ -56,37 +57,37 @@ public class TestRequestHandlerRegistry {
     @Test
     public void testResolveByRequestUri() throws Exception {
         handlerRegistry.register(null, "/test*", "stuff");
-        Assert.assertNotEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest("GET", "/"), context));
-        Assert.assertNotEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest("GET", "/abc"), context));
-        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest("GET", "/test"), context));
-        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest("GET", "/testabc"), context));
+        Assert.assertNotEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest(Methods.GET, "/"), context));
+        Assert.assertNotEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest(Methods.GET, "/abc"), context));
+        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest(Methods.GET, "/test"), context));
+        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest(Methods.GET, "/testabc"), context));
     }
 
     @Test
     public void testByRequestUriWithQuery() throws Exception {
         handlerRegistry.register(null, "/test*", "stuff");
-        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest("GET", "/test?test=a"), context));
-        Assert.assertNotEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest("GET", "/tes?test=a"), context));
+        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest(Methods.GET, "/test?test=a"), context));
+        Assert.assertNotEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest(Methods.GET, "/tes?test=a"), context));
     }
 
     @Test
     public void testResolveByHostnameAndRequestUri() throws Exception {
         handlerRegistry.register("myhost", "/test*", "stuff");
-        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest("GET", new HttpHost("myhost"), "/test"), context));
-        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest("GET", new HttpHost("MyHost"), "/testabc"), context));
+        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest(Methods.GET, new HttpHost("myhost"), "/test"), context));
+        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest(Methods.GET, new HttpHost("MyHost"), "/testabc"), context));
     }
 
     @Test
     public void testResolveByLocalhostAndRequestUri() throws Exception {
         handlerRegistry.register("myhost", "/test*", "stuff");
-        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest("GET", new HttpHost("localhost"), "/test"), context));
-        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest("GET", new HttpHost("LocalHost"), "/testabc"), context));
+        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest(Methods.GET, new HttpHost("localhost"), "/test"), context));
+        Assert.assertEquals("stuff", handlerRegistry.resolve(new BasicHttpRequest(Methods.GET, new HttpHost("LocalHost"), "/testabc"), context));
     }
 
     @Test(expected = MisdirectedRequestException.class)
     public void testResolveByUnknownHostname() throws Exception {
         handlerRegistry.register("myhost", "/test*", "stuff");
-        handlerRegistry.resolve(new BasicHttpRequest("GET", new HttpHost("otherhost"), "/test"), context);
+        handlerRegistry.resolve(new BasicHttpRequest(Methods.GET, new HttpHost("otherhost"), "/test"), context);
     }
 
 }
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/protocol/TestStandardInterceptors.java b/httpcore5/src/test/java/org/apache/hc/core5/http/protocol/TestStandardInterceptors.java
index e114013..d44f003 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/protocol/TestStandardInterceptors.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/protocol/TestStandardInterceptors.java
@@ -36,6 +36,7 @@ import org.apache.hc.core5.http.HeaderElements;
 import org.apache.hc.core5.http.HttpHeaders;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.Methods;
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.http.impl.io.EmptyInputStream;
 import org.apache.hc.core5.http.io.entity.BasicHttpEntity;
@@ -53,7 +54,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestConnControlGenerated() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         final RequestConnControl interceptor = new RequestConnControl();
         interceptor.process(request, request.getEntity(), context);
         final Header header = request.getFirstHeader(HttpHeaders.CONNECTION);
@@ -64,7 +65,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestConnControlConnectMethod() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("CONNECT", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.CONNECT, "/");
         final RequestConnControl interceptor = new RequestConnControl();
         interceptor.process(request, request.getEntity(), context);
         final Header header = request.getFirstHeader(HttpHeaders.CONNECTION);
@@ -74,7 +75,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestConnControlCustom() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         final Header myheader = new BasicHeader(HttpHeaders.CONNECTION, "close");
         request.addHeader(myheader);
         final RequestConnControl interceptor = new RequestConnControl();
@@ -88,7 +89,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestConnControlUpgrade() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.addHeader(HttpHeaders.UPGRADE, "HTTP/2");
         final RequestConnControl interceptor = new RequestConnControl();
         interceptor.process(request, request.getEntity(), context);
@@ -111,9 +112,9 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestContentProtocolException() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request1 = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request1 = new BasicClassicHttpRequest(Methods.POST, "/");
         request1.addHeader(new BasicHeader(HttpHeaders.TRANSFER_ENCODING, "chunked"));
-        final BasicClassicHttpRequest request2 = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request2 = new BasicClassicHttpRequest(Methods.POST, "/");
         request2.addHeader(new BasicHeader(HttpHeaders.CONTENT_LENGTH, "12"));
 
         final RequestContent interceptor = new RequestContent();
@@ -134,7 +135,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestContentNullEntity() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
 
         final RequestContent interceptor = new RequestContent();
         interceptor.process(request, request.getEntity(), context);
@@ -146,7 +147,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestContentEntityContentLengthDelimitedHTTP11() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new StringEntity("whatever", StandardCharsets.US_ASCII));
 
         final RequestContent interceptor = new RequestContent();
@@ -160,7 +161,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestContentEntityChunkedHTTP11() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new StringEntity("whatever", StandardCharsets.US_ASCII, true));
 
         final RequestContent interceptor = new RequestContent();
@@ -174,7 +175,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestContentEntityUnknownLengthHTTP11() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new BasicHttpEntity(EmptyInputStream.INSTANCE, -1, null));
 
         final RequestContent interceptor = new RequestContent();
@@ -189,7 +190,7 @@ public class TestStandardInterceptors {
     public void testRequestContentEntityChunkedHTTP10() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
         context.setProtocolVersion(HttpVersion.HTTP_1_0);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new StringEntity("whatever", StandardCharsets.US_ASCII, true));
 
         final RequestContent interceptor = new RequestContent();
@@ -204,7 +205,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestContentTypeAndEncoding() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new BasicHttpEntity(EmptyInputStream.INSTANCE,
                 ContentType.parseLenient("whatever"), "whatever"));
 
@@ -221,7 +222,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestContentNullTypeAndEncoding() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new BasicHttpEntity(EmptyInputStream.INSTANCE, null, null));
 
         final RequestContent interceptor = new RequestContent();
@@ -234,7 +235,7 @@ public class TestStandardInterceptors {
     public void testRequestContentEntityUnknownLengthHTTP10() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
         context.setProtocolVersion(HttpVersion.HTTP_1_0);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new BasicHttpEntity(EmptyInputStream.INSTANCE, -1, null));
 
         final RequestContent interceptor = new RequestContent();
@@ -260,7 +261,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestContentIgnoreNonenclosingRequests() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         final RequestContent interceptor = new RequestContent();
         interceptor.process(request, request.getEntity(), context);
         Assert.assertEquals(0, request.getHeaders().length);
@@ -270,7 +271,7 @@ public class TestStandardInterceptors {
     public void testRequestContentOverwriteHeaders() throws Exception {
         final RequestContent interceptor = new RequestContent(true);
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.addHeader(new BasicHeader(HttpHeaders.CONTENT_LENGTH, "10"));
         request.addHeader(new BasicHeader(HttpHeaders.TRANSFER_ENCODING, "whatever"));
         request.setEntity(new StringEntity(""));
@@ -284,7 +285,7 @@ public class TestStandardInterceptors {
     public void testRequestContentAddHeaders() throws Exception {
         final RequestContent interceptor = new RequestContent(true);
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new StringEntity(""));
         interceptor.process(request, request.getEntity(), context);
         final Header h1 = request.getFirstHeader(HttpHeaders.CONTENT_LENGTH);
@@ -297,7 +298,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestContentEntityWithTrailers() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new HttpEntityWithTrailers(new StringEntity("whatever", StandardCharsets.US_ASCII),
                 new BasicHeader("h1", "this"), new BasicHeader("h1", "that"), new BasicHeader("h2", "this and that")));
 
@@ -313,7 +314,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestExpectContinueGenerated() throws Exception {
         final HttpCoreContext context = HttpCoreContext.create();
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new StringEntity("whatever", StandardCharsets.US_ASCII));
         final RequestExpectContinue interceptor = new RequestExpectContinue();
         interceptor.process(request, request.getEntity(), context);
@@ -326,7 +327,7 @@ public class TestStandardInterceptors {
     public void testRequestExpectContinueHTTP10() throws Exception {
         final HttpCoreContext context = HttpCoreContext.create();
         context.setProtocolVersion(HttpVersion.HTTP_1_0);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new StringEntity("whatever", StandardCharsets.US_ASCII));
         final RequestExpectContinue interceptor = new RequestExpectContinue();
         interceptor.process(request, request.getEntity(), context);
@@ -337,7 +338,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestExpectContinueZeroContent() throws Exception {
         final HttpCoreContext context = HttpCoreContext.create();
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new StringEntity("", StandardCharsets.US_ASCII));
         final RequestExpectContinue interceptor = new RequestExpectContinue();
         interceptor.process(request, request.getEntity(), context);
@@ -359,7 +360,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestExpectContinueIgnoreNonenclosingRequests() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         final RequestExpectContinue interceptor = new RequestExpectContinue();
         interceptor.process(request, request.getEntity(), context);
         Assert.assertEquals(0, request.getHeaders().length);
@@ -368,7 +369,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestTargetHostGenerated() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.setAuthority(new URIAuthority("somehost", 8080));
         final RequestTargetHost interceptor = new RequestTargetHost();
         interceptor.process(request, request.getEntity(), context);
@@ -380,7 +381,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestTargetHostNotGenerated() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.setAuthority(new URIAuthority("somehost", 8080));
         request.addHeader(new BasicHeader(HttpHeaders.HOST, "whatever"));
         final RequestTargetHost interceptor = new RequestTargetHost();
@@ -394,7 +395,7 @@ public class TestStandardInterceptors {
     public void testRequestTargetHostMissingHostHTTP10() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
         context.setProtocolVersion(HttpVersion.HTTP_1_0);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         final RequestTargetHost interceptor = new RequestTargetHost();
         interceptor.process(request, request.getEntity(), context);
         final Header header = request.getFirstHeader(HttpHeaders.HOST);
@@ -404,7 +405,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestTargetHostMissingHostHTTP11() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         final RequestTargetHost interceptor = new RequestTargetHost();
         try {
             interceptor.process(request, request.getEntity(), context);
@@ -424,7 +425,7 @@ public class TestStandardInterceptors {
             // expected
         }
         try {
-            interceptor.process(new BasicClassicHttpRequest("GET", "/"), null, null);
+            interceptor.process(new BasicClassicHttpRequest(Methods.GET, "/"), null, null);
             Assert.fail("IllegalArgumentException should have been thrown");
         } catch (final IllegalArgumentException ex) {
             // expected
@@ -434,7 +435,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestTargetHostConnectHttp11() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("CONNECT", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.CONNECT, "/");
         request.setAuthority(new URIAuthority("somehost", 8080));
         final RequestTargetHost interceptor = new RequestTargetHost();
         interceptor.process(request, request.getEntity(), context);
@@ -447,7 +448,7 @@ public class TestStandardInterceptors {
     public void testRequestTargetHostConnectHttp10() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
         context.setProtocolVersion(HttpVersion.HTTP_1_0);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("CONNECT", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.CONNECT, "/");
         request.setAuthority(new URIAuthority("somehost", 8080));
         final RequestTargetHost interceptor = new RequestTargetHost();
         interceptor.process(request, request.getEntity(), context);
@@ -458,7 +459,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestUserAgentGenerated() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         final RequestUserAgent interceptor = new RequestUserAgent("some agent");
         interceptor.process(request, request.getEntity(), context);
         final Header header = request.getFirstHeader(HttpHeaders.USER_AGENT);
@@ -469,7 +470,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestUserAgentNotGenerated() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.addHeader(new BasicHeader(HttpHeaders.USER_AGENT, "whatever"));
         final RequestUserAgent interceptor = new RequestUserAgent("some agent");
         interceptor.process(request, request.getEntity(), context);
@@ -481,7 +482,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestUserAgentMissingUserAgent() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         final RequestUserAgent interceptor = new RequestUserAgent();
         interceptor.process(request, request.getEntity(), context);
         final Header header = request.getFirstHeader(HttpHeaders.USER_AGENT);
@@ -523,7 +524,7 @@ public class TestStandardInterceptors {
     @Test
     public void testResponseConnControlEntityUnknownContentLengthExplicitKeepAlive() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive"));
         context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
         final ClassicHttpResponse response = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK");
@@ -550,7 +551,7 @@ public class TestStandardInterceptors {
     public void testResponseConnControlEntityUnknownContentLengthHTTP10() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
         context.setProtocolVersion(HttpVersion.HTTP_1_0);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive"));
         context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
 
@@ -566,7 +567,7 @@ public class TestStandardInterceptors {
     @Test
     public void testResponseConnControlClientRequest() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive"));
         context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
 
@@ -582,7 +583,7 @@ public class TestStandardInterceptors {
     @Test
     public void testResponseConnControlClientRequest2() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
 
         final ClassicHttpResponse response = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK");
@@ -597,7 +598,7 @@ public class TestStandardInterceptors {
     public void testResponseConnControl10Client11Response() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
         context.setProtocolVersion(HttpVersion.HTTP_1_0);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
 
         final ClassicHttpResponse response = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK");
@@ -612,7 +613,7 @@ public class TestStandardInterceptors {
     @Test
     public void testResponseConnControlStatusCode() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive"));
         context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
 
@@ -640,7 +641,7 @@ public class TestStandardInterceptors {
     @Test
     public void testResponseConnControlExplicitClose() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive"));
         context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
 
@@ -657,7 +658,7 @@ public class TestStandardInterceptors {
     @Test
     public void testResponseConnControlClientRequestMixUp() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "blah, keep-alive, close"));
         context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
 
@@ -928,7 +929,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestDateGenerated() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.POST, "/");
         request.setEntity(new StringEntity("stuff"));
 
         final RequestDate interceptor = new RequestDate();
@@ -943,7 +944,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestDateNotGenerated() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
 
         final RequestDate interceptor = new RequestDate();
         interceptor.process(request, request.getEntity(), context);
@@ -1009,7 +1010,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestHttp10HostHeaderAbsent() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.setVersion(HttpVersion.HTTP_1_0);
         final RequestValidateHost interceptor = new RequestValidateHost();
         interceptor.process(request, request.getEntity(), context);
@@ -1018,7 +1019,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestHttpHostHeader() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.setVersion(HttpVersion.HTTP_1_1);
         request.setHeader(HttpHeaders.HOST, "host:8888");
         final RequestValidateHost interceptor = new RequestValidateHost();
@@ -1029,7 +1030,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestHttpHostHeaderNoPort() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.setVersion(HttpVersion.HTTP_1_1);
         request.setHeader(HttpHeaders.HOST, "host");
         final RequestValidateHost interceptor = new RequestValidateHost();
@@ -1040,7 +1041,7 @@ public class TestStandardInterceptors {
     @Test
     public void testRequestHttp11HostHeaderPresent() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.setHeader(HttpHeaders.HOST, "blah");
         final RequestValidateHost interceptor = new RequestValidateHost();
         interceptor.process(request, request.getEntity(), context);
@@ -1049,7 +1050,7 @@ public class TestStandardInterceptors {
     @Test(expected = ProtocolException.class)
     public void testRequestHttp11HostHeaderAbsent() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         final RequestValidateHost interceptor = new RequestValidateHost();
         interceptor.process(request, request.getEntity(), context);
     }
@@ -1057,7 +1058,7 @@ public class TestStandardInterceptors {
     @Test(expected = ProtocolException.class)
     public void testRequestHttp11MultipleHostHeaders() throws Exception {
         final HttpContext context = new BasicHttpContext(null);
-        final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/");
+        final BasicClassicHttpRequest request = new BasicClassicHttpRequest(Methods.GET, "/");
         request.addHeader(HttpHeaders.HOST, "blah");
         request.addHeader(HttpHeaders.HOST, "blah");
         final RequestValidateHost interceptor = new RequestValidateHost();