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:13 UTC

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

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();