-
- Enclosing class:
- HttpRequest
public static interface HttpRequest.Builder
HTTP requests的建设者 。实例
HttpRequest.Builder
是通过致电HttpRequest.newBuilder(URI)
或HttpRequest.newBuilder()
创建的。构建器可用于配置每个请求状态,例如:请求URI,请求方法(除非显式设置,默认为GET),特定请求标头等。每个setter方法都会修改构建器的状态并返回相同的实例。 这些方法不同步,不应在没有外部同步的情况下从多个线程调用。
build
方法每次调用时都返回一个新的HttpRequest
。 一旦建成HttpRequest
是不可变的,并且可以多次发送。请注意,并非所有请求标头都可以由用户代码设置。 有些是出于安全原因而受到限制,而其他一些(例如与身份验证,重定向和Cookie管理相关的标头)可能由特定API管理,而不是通过直接用户设置标头管理。
- 从以下版本开始:
- 11
-
-
方法摘要
-
-
-
方法详细信息
-
uri
HttpRequest.Builder uri(URI uri)
设置此HttpRequest
的请求URI
。- 参数
-
uri
- 请求URI - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果不支持URI
方案
-
expectContinue
HttpRequest.Builder expectContinue(boolean enable)
请求服务器在发送正文之前确认请求。 默认情况下禁用此功能。 如果启用,则在客户端发送请求正文之前,请求服务器发送错误响应或100 Continue
响应。 这意味着在收到此临时响应之前,不会调用请求的请求发布者。- 参数
-
enable
-true
如果Expect继续发送 - 结果
- 这个建设者
-
version
HttpRequest.Builder version(HttpClient.Version version)
为此请求设置首选HttpClient.Version
。应检查相应的
HttpResponse
以查找实际使用的版本。 如果未在请求中设置版本,则请求的版本将是发送HttpClient
的版本 。- 参数
-
version
- 请求的HTTP协议版本 - 结果
- 这个建设者
-
header
HttpRequest.Builder header(String name, String value)
将给定的名称值对添加到此请求的标头集。 给定值将添加到该名称的值列表中。- Implementation Note:
-
实现可以选择限制一些头名称或值,因为HTTP客户端可以自己确定它们的值。
例如,“Content-Length”,它将由请求Publisher确定。
在这种情况下,如果
IllegalArgumentException
标头传递给构建器,则HttpRequest.Builder
的实现可以选择抛出IllegalArgumentException
。 - 参数
-
name
- 标题名称 -
value
- 标头值 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果标头名称或值无效,请参阅 RFC 7230 section-3.2 ,或者标头名称或值受实现限制。
-
headers
HttpRequest.Builder headers(String... headers)
将给定的名称值对添加到此请求的标头集。 提供的String
实例必须作为标题名称和标题值进行备用。 要将多个值添加到同一名称,则必须为每个新值提供相同的名称。- 参数
-
headers
- 名称值对的列表 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果存在奇数个参数,或者标题名称或值无效,请参阅 RFC 7230 section-3.2 ,或者实现标题名称或值为 restricted 。
-
timeout
HttpRequest.Builder timeout(Duration duration)
设置此请求的超时。 如果在指定的超时内未收到响应, 则从HttpClient::send
抛出HttpTimeoutException
或使用HttpTimeoutException异常完成HttpTimeoutException
。 不设置超时的效果与设置无限持续时间相同,即。 永远阻止。- 参数
-
duration
- 超时持续时间 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果持续时间是非正数
-
setHeader
HttpRequest.Builder setHeader(String name, String value)
将给定名称值对设置为此请求的标头集。 这会覆盖以前为name设置的任何值。- 参数
-
name
- 标题名称 -
value
- 标头值 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果标头名称或值无效,请参阅 RFC 7230 section-3.2 ,或者实现标头名称或值为 restricted 。
-
GET
HttpRequest.Builder GET()
将此构建器的请求方法设置为GET。 这是默认值。- 结果
- 这个建设者
-
POST
HttpRequest.Builder POST(HttpRequest.BodyPublisher bodyPublisher)
将此构建器的请求方法设置为POST,并将其请求主体发布者设置为给定值。- 参数
-
bodyPublisher
- 身体出版商 - 结果
- 这个建设者
-
PUT
HttpRequest.Builder PUT(HttpRequest.BodyPublisher bodyPublisher)
将此构建器的请求方法设置为PUT,并将其请求主体发布者设置为给定值。- 参数
-
bodyPublisher
- 身体出版商 - 结果
- 这个建设者
-
DELETE
HttpRequest.Builder DELETE()
将此构建器的请求方法设置为DELETE。- 结果
- 这个建设者
-
method
HttpRequest.Builder method(String method, HttpRequest.BodyPublisher bodyPublisher)
将此构建器的请求方法和请求主体设置为给定值。- API Note:
-
可以在不需要或不适合请求正文的情况下使用
noBody
请求正文发布者。 方法是否受限制是特定于实现的。 例如,某些实现可以选择限制CONNECT
方法。 - 参数
-
method
- 使用方法 -
bodyPublisher
- 身体出版商 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果方法名称无效,请参阅 RFC 7230 section-3.1.1 ,否则该方法受实现限制。
-
build
HttpRequest build()
建立并返回HttpRequest
。- 结果
-
新的
HttpRequest
- 异常
-
IllegalStateException
- 如果尚未设置URI
-
copy
HttpRequest.Builder copy()
根据当前状态返回此Builder
的精确副本。 然后,可以独立于此构建器修改新构建器。- 结果
- an exact copy of this builder
-
-