- java.lang.Object
-
- jdk.incubator.http.HttpClient
-
public abstract class HttpClient extends Object
用于多个HttpRequest
共同的配置信息的容器。 所有请求均通过HttpClient
发送。
Incubating Feature.将在以后的版本中删除。HttpClient
是不可变的,并从从newBuilder()
返回的构建器创建。 请求构建器通过调用HttpRequest.newBuilder()
创建。有关此API的使用示例,请参阅
HttpRequest
。- 从以下版本开始:
- 9
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
HttpClient.Builder
不可变的建筑师HttpClient
s。static class
HttpClient.Redirect
定义自动重定向策略。static class
HttpClient.Version
HTTP协议版本。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
HttpClient()
创建一个HttpClient。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 abstract Optional<Authenticator>
authenticator()
返回一个Optional
包含Authenticator
此客户端上设置。abstract Optional<CookieManager>
cookieManager()
返回一个Optional
,其中包含该客户端的CookieManager
。abstract Executor
executor()
返回此客户端上设置的Executor
。abstract HttpClient.Redirect
followRedirects()
返回此客户端的以下重定向设置。static HttpClient.Builder
newBuilder()
创建一个新的HttpClient
构建器。static HttpClient
newHttpClient()
返回具有默认设置的新HttpClient。WebSocket.Builder
newWebSocketBuilder(URI uri, WebSocket.Listener listener)
创建连接到给定URI的WebSocket
实例的构建器,并接收与给定的事件和消息Listener
。abstract Optional<ProxySelector>
proxy()
返回一个包含此客户端的Optional
的ProxySelector
。abstract <T> HttpResponse<T>
send(HttpRequest req, HttpResponse.BodyHandler<T> responseBodyHandler)
使用此客户端发送给定的请求,如有必要,阻止获取响应。abstract <T> CompletableFuture<HttpResponse<T>>
sendAsync(HttpRequest req, HttpResponse.BodyHandler<T> responseBodyHandler)
使用此客户端和给定的响应处理程序异步发送给定的请求。abstract <U,T> CompletableFuture<U>
sendAsync(HttpRequest req, HttpResponse.MultiProcessor<U,T> multiProcessor)
使用此客户端和给定的多响应处理程序异步发送给定的请求。abstract SSLContext
sslContext()
返回SSLContext
,如果在这个客户端上设置了一个。abstract Optional<SSLParameters>
sslParameters()
返回一个Optional
包含SSLParameters
此客户端上设置。abstract HttpClient.Version
version()
返回此客户端请求的HTTP协议版本。
-
-
-
方法详细信息
-
newHttpClient
public static HttpClient newHttpClient()
返回具有默认设置的新HttpClient。- 结果
- 一个新的HttpClient
-
newBuilder
public static HttpClient.Builder newBuilder()
创建一个新的HttpClient
构建器。- 结果
-
一个
HttpClient.Builder
-
cookieManager
public abstract Optional<CookieManager> cookieManager()
返回一个Optional
,其中包含该客户端的CookieManager
。 如果在此客户端的构建器中未设置CookieManager
,则Optional
为空。- 结果
-
一个
Optional
包含该客户的CookieManager
-
followRedirects
public abstract HttpClient.Redirect followRedirects()
返回此客户端的以下重定向设置。 此设置的默认值为HttpClient.Redirect.NEVER
- 结果
- 此客户端的关注重定向设置
-
proxy
public abstract Optional<ProxySelector> proxy()
返回一个包含此客户端的Optional
的ProxySelector
。 如果没有设置代理,那么Optional
是空的。- 结果
-
一个
Optional
包含该客户端的代理选择器
-
sslContext
public abstract SSLContext sslContext()
返回SSLContext
,如果在这个客户端上设置了一个。 如果设置了安全管理员,则呼叫者必须具有NetPermission
(“getSSLContext”)权限。 如果没有设置SSLContext
,则返回默认上下文。- 结果
- 这个客户端的SSLContext
- 异常
-
SecurityException
- 如果调用者没有获取SSLContext的权限
-
sslParameters
public abstract Optional<SSLParameters> sslParameters()
返回一个Optional
其中包含此客户端上的SSLParameters
集。 如果客户的构建器中没有设置SSLParameters
,则Optional
为空。- 结果
-
一个
Optional
包含这个客户的SSLParameters
-
authenticator
public abstract Optional<Authenticator> authenticator()
返回一个Optional
其中包含此客户端上设置的Authenticator
。 如果在客户端的构建器中没有设置Authenticator
,则Optional
为空。- 结果
-
一个
Optional
包含这个客户的Authenticator
-
version
public abstract HttpClient.Version version()
返回此客户端请求的HTTP协议版本。 默认值为HttpClient.Version.HTTP_2
- 结果
- 请求的HTTP协议版本
-
executor
public abstract Executor executor()
返回此客户端上设置的Executor
。 如果在客户端的构建器上未设置Executor
,则返回默认对象。 为每个客户端独立创建默认的Executor
。- 结果
- 这位客户的执行官
-
send
public abstract <T> HttpResponse<T> send(HttpRequest req, HttpResponse.BodyHandler<T> responseBodyHandler) throws IOException, InterruptedException
使用此客户端发送给定的请求,如有必要,阻止获取响应。 返回的HttpResponse
<T>
包含响应状态,标题和正文(由给定的响应体处理程序处理)。- 参数类型
-
T
- 响应体型 - 参数
-
req
- 请求 -
responseBodyHandler
- 响应体处理程序 - 结果
- 响应体
- 异常
-
IOException
- 发送或接收时是否发生I / O错误 -
InterruptedException
- 操作是否中断
-
sendAsync
public abstract <T> CompletableFuture<HttpResponse<T>> sendAsync(HttpRequest req, HttpResponse.BodyHandler<T> responseBodyHandler)
使用此客户端和给定的响应处理程序异步发送给定的请求。- 参数类型
-
T
- 响应体型 - 参数
-
req
- 请求 -
responseBodyHandler
- 响应体处理程序 - 结果
-
一个
CompletableFuture<HttpResponse<T>>
-
sendAsync
public abstract <U,T> CompletableFuture<U> sendAsync(HttpRequest req, HttpResponse.MultiProcessor<U,T> multiProcessor)
使用此客户端和给定的多响应处理程序异步发送给定的请求。- 参数类型
-
U
- 表示聚合结果的类型 -
T
- 表示所有响应体的类型 - 参数
-
req
- 请求 -
multiProcessor
- 用于请求的多处理器 - 结果
-
一个
CompletableFuture<U>
-
newWebSocketBuilder
public WebSocket.Builder newWebSocketBuilder(URI uri, WebSocket.Listener listener)
创建连接到给定URI的WebSocket
实例的构建器,并使用给定的Listener
接收事件和消息。例
HttpClient client = HttpClient.newHttpClient(); WebSocket.Builder builder = client.newWebSocketBuilder( URI.create("ws://websocket.example.com"), listener);
通过使用自定义的
HttpClient
可以更好地控制WebSocket打开握手。例
InetSocketAddress addr = new InetSocketAddress("proxy.example.com", 80); HttpClient client = HttpClient.newBuilder() .proxy(ProxySelector.of(addr)) .build(); WebSocket.Builder builder = client.newWebSocketBuilder( URI.create("ws://websocket.example.com"), listener);
- 实现要求:
-
此方法的默认实现将抛出
UnsupportedOperationException
。 但是,通过newHttpClient()
或newBuilder()
获得的客户端提供WebSocket功能。 - 参数
-
uri
- WebSocket URI -
listener
- 听众 - 结果
-
一个
WebSocket
实例的构建器 - 异常
-
UnsupportedOperationException
- 如果这个HttpClient
不提供WebSocket支持
-
-