Module java.net.http


module java.net.http
定义了HTTP客户端和WebSocket API。

java.net.http API使用的系统属性

以下是JDK中java.net.http客户端实现使用的系统网络属性列表。如果给定一个不能解析为数字的字符串,则假定所有需要数字值的属性使用默认值。除非另有说明,否则所有值都可以在conf/net.properties文件中设置。在所有情况下,值可以作为命令行上的系统属性指定,此时,任何conf/net.properties中的值都将被覆盖。不能保证属性值可以通过System.setProperty()方法进行程序化设置。此API的其他实现可能选择不支持这些属性。

  • jdk.httpclient.allowRestrictedHeaders(默认值:见下文)
    一个逗号分隔的通常受限制的HTTP标头名称列表,用户可以在HTTP请求中或通过用户代码在HttpRequest实例中设置。默认情况下,以下请求标头不允许用户代码设置:connection、content-length、expect、host和upgrade。您可以使用此属性覆盖此行为。名称不区分大小写,忽略空格。请注意,此属性仅用于测试,而不适用于实际部署。在使用此属性时可能会发生协议错误或其他未定义行为。根据上下文,可能会有其他受限制的标头不允许设置。当相关的HttpClient设置了认证器时,这包括"Authorization"标头。这些限制无法通过此属性覆盖。

  • jdk.httpclient.bufsize(默认值:16384字节或16 kB)
    以字节为单位用于内部分配缓冲区的大小。

  • jdk.httpclient.connectionPoolSize(默认值:0)
    保留在HTTP/1.1保持活动缓存中的最大连接数。值为0表示缓存无限制。

  • jdk.httpclient.connectionWindowSize(默认值:2^26)
    HTTP/2客户端连接窗口大小(以字节为单位)。最大大小为2^31-1。此值不能小于流窗口大小,流窗口大小可以通过jdk.httpclient.windowsize系统属性进行配置。

  • jdk.httpclient.disableRetryConnect(默认值:false)
    是否禁用连接失败的自动重试。如果为false,则会尝试重试(受重试限制限制)。

  • jdk.httpclient.enableAllMethodRetry(默认值:false)
    是否允许自动重试非幂等的HTTP请求。

  • jdk.httpclient.enablepush(默认值:1)
    是否启用HTTP/2推送承诺。值为1表示启用推送承诺;值为0表示禁用。

  • jdk.httpclient.hpack.maxheadertablesize(默认值:16384或16 kB)
    HTTP/2客户端最大HPACK标头表大小(以字节为单位)。

  • jdk.httpclient.HttpClient.log(默认值:无)
    通过Platform Logging API启用各种事件的高级日志记录。该值包含以下任何一项的逗号分隔列表:

    • errors
    • requests
    • headers
    • content
    • frames
    • ssl
    • trace
    • channel

    您可以将frames项目附加到以下任何一项的冒号分隔列表中:
    • control
    • data
    • window
    • all

    指定一个项目将其添加到HTTP客户端的日志中。例如,如果指定以下值,则Platform Logging API将记录所有可能的HTTP客户端事件:
    "errors,requests,headers,frames:control:data:window,ssl,trace,channel"
    请注意,您可以将control:data:window替换为all。日志记录器的名称为"jdk.httpclient.HttpClient",所有日志记录均为INFO级别。
  • jdk.httpclient.keepalive.timeout(默认值:30)
    在保持活动缓存中保持空闲HTTP连接的秒数。此属性适用于HTTP/1.1和HTTP/2。HTTP/2的值可以使用jdk.httpclient.keepalive.timeout.h2属性进行覆盖。

  • jdk.httpclient.keepalive.timeout.h2(默认值:见下文)
    保持空闲HTTP/2连接的秒数。如果未设置,则使用jdk.httpclient.keepalive.timeout设置。

  • jdk.httpclient.maxframesize(默认值:16384或16kB)
    HTTP/2客户端最大帧大小(以字节为单位)。服务器不得发送大于此大小的帧。

  • jdk.httpclient.maxstreams(默认值:100)
    客户端允许服务器同时打开的最大数量的HTTP/2推送流。

  • jdk.httpclient.receiveBufferSize(默认值:操作系统默认值)
    HTTP客户端套接字接收缓冲区大小(以字节为单位)。

  • jdk.httpclient.redirects.retrylimit(默认值:5)
    在重定向或出现任何原因导致失败时发送HTTP请求的最大尝试次数。

  • jdk.httpclient.websocket.writeBufferSize(默认值:16384或16kB)
    Web套接字实现用于套接字写入的缓冲区大小。

  • jdk.httpclient.windowsize(默认值:16777216或16 MB)
    HTTP/2客户端流窗口大小(以字节为单位)。

  • jdk.httpclient.auth.retrylimit(默认值:3)
    基本身份验证过滤器将尝试重试失败身份验证的次数。

  • jdk.httpclient.sendBufferSize(默认值:操作系统默认值)
    HTTP客户端套接字发送缓冲区大小。小于或等于零的值将被忽略。

  • jdk.internal.httpclient.disableHostnameVerification(默认值:false)
    如果为true(或设置为空字符串),则在SSL证书中禁用主机名验证。这仅适用于系统属性,不适用于conf/net.properties。仅供测试目的使用。

  • jdk.http.auth.proxying.disabledSchemes(默认值:见conf/net.properties)
    一个逗号分隔的HTTP身份验证方案名称列表,不允许HTTP客户端实现用于HTTP代理。

  • jdk.http.auth.tunneling.disabledSchemes(默认值:见conf/net.properties)
    一个逗号分隔的HTTP身份验证方案名称列表,不允许HTTP客户端实现用于HTTP CONNECT隧道。

模块图:
java.net.http的模块图java.net.http的模块图
自JDK版本:
11
  • Packages

    Exports
    Package
    Description
    HTTP客户端和WebSocket API