java.lang.Object
java.net.http.HttpRequest
一个HTTP请求。
HttpRequest
实例是通过HttpRequest
builder构建的。可以从其中一个newBuilder
方法获取HttpRequest
builder。可以设置请求的URI
、头部和主体。请求主体通过提供给POST
、PUT
或method
方法的一个BodyPublisher
来提供。一旦在构建器中设置了所有必需的参数,build
将返回HttpRequest
。构建器可以被复制和修改多次,以构建在某些参数上有所不同的多个相关请求。
以下是一个打印响应主体作为字符串的GET请求示例:
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();
BodyPublishers
类提供了许多常见发布者的实现。或者,可以使用自定义的BodyPublisher
实现。
- 自版本:
- 11
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
BodyPublisher
将高级Java对象转换为适合作为请求主体发送的字节缓冲流。static class
实现了BodyPublisher
的各种实用发布者的实现,例如从字符串或文件发布请求主体。static interface
HTTP请求的构建器。 -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract Optional
<HttpRequest.BodyPublisher> 返回一个包含在此请求上设置的HttpRequest.BodyPublisher
的Optional
。final boolean
测试此HTTP请求实例与给定对象的相等性。abstract boolean
返回此请求的期望继续设置。final int
hashCode()
为此HTTP请求实例计算哈希码。abstract HttpHeaders
headers()
此请求发送或将要发送的(用户可访问的)请求头。abstract String
method()
返回此请求的请求方法。static HttpRequest.Builder
创建一个HttpRequest
构建器。static HttpRequest.Builder
newBuilder
(HttpRequest request, BiPredicate<String, String> filter) 创建一个Builder
,其初始状态从现有的HttpRequest
复制而来。static HttpRequest.Builder
newBuilder
(URI uri) 使用给定的URI创建一个HttpRequest
构建器。timeout()
返回一个包含此请求的超时持续时间的Optional
。abstract URI
uri()
返回此请求的URI
。abstract Optional
<HttpClient.Version> version()
返回一个包含将为此HttpRequest
请求的HTTP协议版本的Optional
。
-
Constructor Details
-
HttpRequest
protected HttpRequest()创建一个HttpRequest。
-
-
Method Details
-
newBuilder
使用给定的URI创建一个HttpRequest
构建器。- 参数:
-
uri
- 请求的URI - 返回:
- 一个新的请求构建器
- 抛出:
-
IllegalArgumentException
- 如果URI方案不受支持。
-
newBuilder
public static HttpRequest.Builder newBuilder(HttpRequest request, BiPredicate<String, String> filter) 创建一个Builder
,其初始状态从现有的HttpRequest
复制而来。此构建器可用于构建一个等同于原始请求的
HttpRequest
,同时允许在构建之前修改请求状态 - 例如,添加额外的头部。当从给定请求复制每个头部名称值对时,将应用
filter
。完成后,只有满足filter
所规定条件的头部才会出现在从此方法返回的Builder
中。- API注释:
-
以下场景展示了
filter
的典型用例。给定一个HttpRequest
request:
- 保留所有头部:
HttpRequest.newBuilder(request, (n, v) -> true)
- 移除所有头部:
HttpRequest.newBuilder(request, (n, v) -> false)
- 移除特定头部(例如 Foo-Bar):
HttpRequest.newBuilder(request, (name, value) -> !name.equalsIgnoreCase("Foo-Bar"))
- 保留所有头部:
- 参数:
-
request
- 原始请求 -
filter
- 头部过滤器 - 返回:
- 一个新的请求构建器
- 抛出:
-
IllegalArgumentException
- 如果无法从给定请求中生成新的构建器(例如,如果请求包含非法参数) - 自版本:
- 16
-
newBuilder
创建一个HttpRequest
构建器。- 返回:
- 一个新的请求构建器
-
bodyPublisher
- 返回:
-
一个包含此请求的
BodyPublisher
的Optional
-
method
返回此请求的请求方法。如果未明确设置,则任何请求的默认方法为"GET"。- 返回:
- 此请求的方法
-
timeout
返回一个包含此请求的超时持续时间的Optional
。如果在请求的构建器中未设置超时持续时间,则Optional
为空。- 返回:
-
一个包含此请求的超时持续时间的
Optional
-
expectContinue
public abstract boolean expectContinue()返回此请求的期望继续设置。- 返回:
- 此请求的期望继续设置
-
uri
返回此请求的URI
。- 返回:
- 此请求的URI
-
version
返回一个包含将为此HttpRequest
请求的HTTP协议版本的Optional
。如果在请求的构建器中未设置版本,则Optional
为空。在这种情况下,请求的版本将是发送的HttpClient
的版本。应查询相应的HttpResponse
以确定实际使用的版本。- 返回:
- HTTP协议版本
-
headers
此请求发送或将要发送的(用户可访问的)请求头。- 返回:
- 此请求的HttpHeaders
-
equals
测试此HTTP请求实例与给定对象的相等性。如果给定对象不是
HttpRequest
,则此方法返回false
。如果它们的URI、方法和头部字段都相等,则两个HTTP请求是相等的。此方法满足
Object.equals
方法的一般约定。 -
hashCode
public final int hashCode()为此HTTP请求实例计算哈希码。哈希码基于HTTP请求的URI、方法和头部组件,并满足
Object.hashCode
方法的一般约定。
-