软件包  jdk.incubator.http

Class HttpClient



  • public abstract class HttpClient
    extends Object
    用于多个HttpRequest共同的配置信息的容器。 所有请求均通过HttpClient发送。
    Incubating Feature.将在以后的版本中删除。

    HttpClient是不可变的,并从从newBuilder()返回的构建器创建。 请求构建器通过调用HttpRequest.newBuilder()创建。

    有关此API的使用示例,请参阅HttpRequest

    从以下版本开始:
    9
    • 构造方法详细信息

      • HttpClient

        protected HttpClient​()
        创建一个HttpClient。
    • 方法详细信息

      • 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
      • proxy

        public abstract Optional<ProxySelector> proxy​()
        返回一个包含此客户端的OptionalProxySelector 如果没有设置代理,那么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
      • executor

        public abstract Executor executor​()
        返回此客户端上设置的Executor 如果在客户端的构建器上未设置Executor ,则返回默认对象。 为每个客户端独立创建默认的Executor
        结果
        这位客户的执行官
      • 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支持