java.lang.Object
java.net.http.HttpRequest
HTTP 请求。
HttpRequest 实例是通过 HttpRequest builder 构建的。 HttpRequest 构建器是从 newBuilder 方法之一获得的。可以设置请求的 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
-
内部类总结
内部类修饰符和类型类描述static interfaceBodyPublisher将高级 Java 对象转换为适合作为请求主体发送的字节缓冲区流。static classBodyPublisher的实现实现了各种有用的发布者,例如从字符串或文件发布请求主体。static interfaceHTTP 请求 的建设者。 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述abstract Optional<HttpRequest.BodyPublisher>返回一个Optional,其中包含在此请求上设置的HttpRequest.BodyPublisher。final boolean测试此 HTTP 请求实例是否与给定对象相等。abstract boolean返回此请求的 期待继续 设置。final inthashCode()计算此 HTTP 请求实例的哈希码。abstract HttpHeadersheaders()与此请求一起(或将与)一起发送的(用户可访问的)请求标头。abstract Stringmethod()返回此请求的请求方法。static HttpRequest.Builder创建一个HttpRequest构建器。static HttpRequest.BuildernewBuilder(HttpRequest request, BiPredicate<String, String> filter) 创建一个Builder其初始状态是从现有HttpRequest复制的。static HttpRequest.BuildernewBuilder(URI uri) 使用给定的 URI 创建一个HttpRequest构建器。timeout()返回包含此请求的超时持续时间的Optional。abstract URIuri()返回此请求的URI。abstract Optional<HttpClient.Version>version()返回一个Optional包含将为此HttpRequest请求的 HTTP 协议版本。
-
构造方法详细信息
-
HttpRequest
protected HttpRequest()创建一个 HttpRequest。
-
-
方法详情
-
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 注意:
-
以下场景演示了过滤器的典型用例。给定一个
HttpRequestrequest :
- 保留所有标题:
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
返回一个Optional包含将为此HttpRequest请求的 HTTP 协议版本。如果版本未在请求的构建器中设置,则Optional为空。在这种情况下,请求的版本将是发送HttpClient的版本。应查询相应的HttpResponse以确定实际使用的版本。- 返回:
- HTTP协议版本
-
headers
与此请求一起(或将与)一起发送的(用户可访问的)请求标头。- 返回:
- 这个请求的 HttpHeaders
-
equals
测试此 HTTP 请求实例是否与给定对象相等。如果给定对象不是
HttpRequest,则此方法返回false。如果两个 HTTP 请求的 URI、方法和标头字段都相等,则它们是相等的。此方法满足
Object.equals方法的一般契约。 -
hashCode
public final int hashCode()计算此 HTTP 请求实例的哈希码。哈希码基于 HTTP 请求的 URI、方法和标头组件,并满足
Object.hashCode方法的一般约定。
-