public abstract class HttpRequest extends Object
 An HttpRequest instance is built through an HttpRequest builder. An HttpRequest builder is obtained from one of the newBuilder methods. A request's URI, headers, and body can be set. Request bodies are provided through a BodyPublisher supplied to one of the POST, PUT or method methods. Once all required parameters have been set in the builder, build will return the HttpRequest. Builders can be copied and modified many times in order to build multiple related requests that differ in some parameters. 
The following is an example of a GET request that prints the response body as a String:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("http://foo.com/"))
      .build();
client.sendAsync(request, BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();The class BodyPublishers provides implementations of many common publishers. Alternatively, a custom BodyPublisher implementation can be used.
| Modifier and Type | Class | Description | 
|---|---|---|
| static interface  | HttpRequest.BodyPublisher | A  BodyPublisherconverts high-level Java objects into a flow of byte buffers suitable for sending as a request body. | 
| static class  | HttpRequest.BodyPublishers | Implementations of  BodyPublisherthat implement various useful publishers, such as publishing the request body from a String, or from a file. | 
| static interface  | HttpRequest.Builder | A builder of HTTP requests. | 
| Modifier | Constructor | Description | 
|---|---|---|
| protected  | Creates an HttpRequest. | 
| Modifier and Type | Method | Description | 
|---|---|---|
| abstract Optional | bodyPublisher() | Returns an  Optionalcontaining theHttpRequest.BodyPublisherset on this request. | 
| final boolean | equals | Tests this HTTP request instance for equality with the given object. | 
| abstract boolean | expectContinue() | Returns this request's expect continue setting. | 
| final int | hashCode() | Computes a hash code for this HTTP request instance. | 
| abstract HttpHeaders | headers() | The (user-accessible) request headers that this request was (or will be) sent with. | 
| abstract String | method() | Returns the request method for this request. | 
| static HttpRequest.Builder | newBuilder() | Creates an  HttpRequestbuilder. | 
| static HttpRequest.Builder | newBuilder | Creates a  Builderwhose initial state is copied from an existingHttpRequest. | 
| static HttpRequest.Builder | newBuilder | Creates an  HttpRequestbuilder with the given URI. | 
| abstract Optional | timeout() | Returns an  Optionalcontaining this request's timeout duration. | 
| abstract URI | uri() | Returns this request's  URI. | 
| abstract Optional | version() | Returns an  Optionalcontaining the HTTP protocol version that will be requested for thisHttpRequest. | 
protected HttpRequest()
public static HttpRequest.Builder newBuilder(URI uri)
HttpRequest builder with the given URI.uri - the request URIIllegalArgumentException - if the URI scheme is not supported.public static HttpRequest.Builder newBuilder(HttpRequest request, BiPredicate<String,String> filter)
Builder whose initial state is copied from an existing HttpRequest.  This builder can be used to build an HttpRequest, equivalent to the original, while allowing amendment of the request state prior to construction - for example, adding additional headers. 
 The filter is applied to each header name value pair as they are copied from the given request. When completed, only headers that satisfy the condition as laid out by the filter will be present in the Builder returned from this method.
HttpRequest request: HttpRequest.newBuilder(request, (n, v) -> true)HttpRequest.newBuilder(request, (n, v) -> false)HttpRequest.newBuilder(request, (name, value) -> !name.equalsIgnoreCase("Foo-Bar"))request - the original requestfilter - a header filterIllegalArgumentException - if a new builder cannot be seeded from the given request (for instance, if the request contains illegal parameters)public static HttpRequest.Builder newBuilder()
HttpRequest builder.public abstract Optional<HttpRequest.BodyPublisher> bodyPublisher()
Optional containing the HttpRequest.BodyPublisher set on this request. If no BodyPublisher was set in the requests's builder, then the Optional is empty.Optional containing this request's BodyPublisher
public abstract String method()
public abstract Optional<Duration> timeout()
Optional containing this request's timeout duration. If the timeout duration was not set in the request's builder, then the Optional is empty.Optional containing this request's timeout durationpublic abstract boolean expectContinue()
public abstract URI uri()
URI.public abstract Optional<HttpClient.Version> version()
Optional containing the HTTP protocol version that will be requested for this HttpRequest. If the version was not set in the request's builder, then the Optional is empty. In that case, the version requested will be that of the sending HttpClient. The corresponding HttpResponse should be queried to determine the version that was actually used.public abstract HttpHeaders headers()
public final boolean equals(Object obj)
 If the given object is not an HttpRequest then this method returns false. Two HTTP requests are equal if their URI, method, and headers fields are all equal. 
 This method satisfies the general contract of the Object.equals method.
public final int hashCode()
 The hash code is based upon the HTTP request's URI, method, and header components, and satisfies the general contract of the Object.hashCode method.
    © 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
    https://docs.oracle.com/en/java/javase/21/docs/api/java.net.http/java/net/http/HttpRequest.html