Class HttpRequest
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.
- Since:
- 11
Nested Class Summary
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. |
Constructor Summary
Modifier | Constructor | Description |
---|---|---|
protected |
Creates an HttpRequest. |
Method Summary
Modifier and Type | Method | Description |
---|---|---|
abstract Optional<HttpRequest.BodyPublisher> |
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<Duration> |
timeout() |
Returns an Optional containing this request's timeout duration. |
abstract URI |
uri() |
Returns this request's URI . |
abstract Optional<HttpClient.Version> |
version() |
Returns an Optional containing the HTTP protocol version that will be requested for this HttpRequest . |
Constructor Details
HttpRequest
protected HttpRequest()
Method Details
newBuilder
public static HttpRequest.Builder newBuilder(URI uri)
HttpRequest
builder with the given URI.- Parameters:
-
uri
- the request URI - Returns:
- a new request builder
- Throws:
-
IllegalArgumentException
- if the URI scheme is not supported.
newBuilder
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.
- API Note:
- The following scenarios demonstrate typical use-cases of the filter. Given an
HttpRequest
request:
- Retain all headers:
HttpRequest.newBuilder(request, (n, v) -> true)
- Remove all headers:
HttpRequest.newBuilder(request, (n, v) -> false)
- Remove a particular header (e.g. Foo-Bar):
HttpRequest.newBuilder(request, (name, value) -> !name.equalsIgnoreCase("Foo-Bar"))
- Retain all headers:
- Parameters:
-
request
- the original request -
filter
- a header filter - Returns:
- a new request builder
- Throws:
-
IllegalArgumentException
- if a new builder cannot be seeded from the given request (for instance, if the request contains illegal parameters) - Since:
- 16
newBuilder
public static HttpRequest.Builder newBuilder()
HttpRequest
builder.- Returns:
- a new request builder
bodyPublisher
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.- Returns:
- an
Optional
containing this request'sBodyPublisher
method
public abstract String method()
- Returns:
- this request's method
timeout
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.- Returns:
- an
Optional
containing this request's timeout duration
expectContinue
public abstract boolean expectContinue()
- Returns:
- this request's expect continue setting
uri
public abstract URI uri()
URI
.- Returns:
- this request's URI
version
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.- Returns:
- HTTP protocol version
headers
public abstract HttpHeaders headers()
- Returns:
- this request's HttpHeaders
equals
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.
hashCode
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, 2021, 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/17/docs/api/java.net.http/java/net/http/HttpRequest.html