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 BodyPublisher converts high-level Java objects into a flow of byte buffers suitable for sending as a request body. |
static class |
HttpRequest.BodyPublishers |
Implementations of BodyPublisher that 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 Optional containing the HttpRequest.BodyPublisher set 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 HttpRequest builder. |
static HttpRequest.Builder |
newBuilder |
Creates a Builder whose initial state is copied from an existing HttpRequest . |
static HttpRequest.Builder |
newBuilder |
Creates an HttpRequest builder with the given URI. |
abstract Optional |
timeout() |
Returns an Optional containing this request's timeout duration. |
abstract URI |
uri() |
Returns this request's URI . |
abstract Optional |
version() |
Returns an Optional containing the HTTP protocol version that will be requested for this HttpRequest . |
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