Skip to content

选项配置

概述

Solpic支持灵活的选项配置,由HttpOption接口定义,所有支持的选择都以常量的形式定义在HttpOptions中。目前支持GLOBALCLIENTREQUEST三种等级选项。

使用选项

Solpic在加载选项的值的时候会优先选用使用者配置的值,次选通过属性key配置的值(通过System#setProperty()设置,然后通过System#getProperty()获取字符串值转换为目标类型值),最后会选用默认值。通过HttpRequest获取选项配置值的时候,如果等级为CLIENT则会尝试从可以在使用Builder模式创建HttpClient或者HttpRequest的时候配置所需的选项,例如:

java
// 设置客户端级别选项
HttpClient httpClient = Solpic.newHttpClientBuilder()
        .type(HttpClientType.DEFAULT)
        .option(HttpOptions.HTTP_ENABLE_EXECUTE_TRACING, true)
        .option(HttpOptions.HTTP_CHUNK_SIZE, 4096)
        .build();

// 设置请求级别选项
HttpRequest httpRequest = HttpRequest.newBuilder()
        .uri(URI.create("https://httpbin.org/get"))
        .method(HttpMethod.GET)
        .option(HttpOptions.HTTP_REQUEST_CHUNK_SIZE, 4096)
        .option(HttpOptions.HTTP_REQUEST_CONNECT_TIMEOUT, 10000)
        .build();

选项支持矩阵

选项 \ 客户端类型defaultjhcahc5okhttpahc4
HTTP_CLIENT_TYPE-----
HTTP_CLIENT_ID
HTTP_PROTOCOL_VERSION
HTTP_THREAD_POOL
HTTP_SCHEDULED_THREAD_POOL
HTTP_SSL_CONFIG
HTTP_PROXY
HTTP_ENABLE_LOGGING
HTTP_ENABLE_EXECUTE_PROFILE
HTTP_ENABLE_EXECUTE_TRACING
HTTP_FORCE_WRITE
HTTP_RESPONSE_COPY_ATTACHMENTS
HTTP_CLIENT_METRICS
HTTP_CLIENT_ENABLE_CONNECTION_POOL
HTTP_CLIENT_CONNECTION_POOL_CAPACITY
HTTP_CLIENT_CONNECTION_TTL
HTTP_CONNECT_TIMEOUT
HTTP_REQUEST_CONNECT_TIMEOUT
HTTP_SOCKET_TIMEOUT
HTTP_REQUEST_SOCKET_TIMEOUT
HTTP_READ_TIMEOUT
HTTP_WRITE_TIMEOUT
HTTP_TIMEOUT
HTTP_CHUNK_SIZE
HTTP_REQUEST_FORCE_WRITE
HTTP_REQUEST_CHUNK_SIZE
HTTP_REQUEST_READ_TIMEOUT
HTTP_REQUEST_TIMEOUT
HTTP_CONNECTION_REQUEST_TIMEOUT
HTTP_REQUEST_CONNECTION_REQUEST_TIMEOUT
HTTP_RESPONSE_TIMEOUT
HTTP_REQUEST_RESPONSE_TIMEOUT
HTTP_CONNECTION_KEEPALIVE
HTTP_REQUEST_CONNECTION_KEEPALIVE

TIP

这里再次提示一下客户端类型编码和对应的实现:

  • default:实现类DefaultHttpClient,基于HttpURLConnection实现
  • jhc:实现类JdkHttpClientImpl,基于JDK11+java.net.http.HttpClient实现
  • ahc5:实现类ApacheHttpClientV5Impl,需要引入org.apache.httpcomponents.client5:httpclient5:$version
  • okhttp:实现类OkHttpClientImpl,需要引入com.squareup.okhttp3:okhttp:$version
  • ahc4:实现类ApacheHttpClientV4Impl,需要引入org.apache.httpcomponents:httpclient:$version

选项列表

所有支持的选项都在HttpOptions中作为常量定义。

HTTP_CLIENT_TYPE

用于创建HttpClient时指定客户端类型。

  • id:1L << 0
  • 唯一标识:HTTP_CLIENT_TYPE
  • 等级:GLOBAL
  • 属性 key:solpic.http.client.type
  • 默认值:default

HTTP_CLIENT_ID

用于创建HttpClient时指定客户端的唯一标识。

  • id:1L << 1
  • 唯一标识:HTTP_CLIENT_ID
  • 等级:CLIENT
  • 属性 key:solpic.http.client.id
  • 默认值:NULL
  • 支持客户端类型:ALL

HTTP_PROTOCOL_VERSION

用于创建HttpClient时指定客户端的HTTP协议版本,此选项目前暂时没有任何作用

  • id:1L << 2
  • 唯一标识:HTTP_PROTOCOL_VERSION
  • 等级:CLIENT
  • 属性 key:solpic.http.protocol.version
  • 默认值:HttpVersion.HTTP_1_1
  • 支持客户端类型:ALL

HTTP_THREAD_POOL

用于创建HttpClient时指定客户端的线程池。

  • id:1L << 3
  • 唯一标识:HTTP_THREAD_POOL
  • 等级:CLIENT
  • 属性 key:solpic.http.thread.pool
  • 默认值:default
  • 支持客户端类型:ALL

HTTP_SCHEDULED_THREAD_POOL

用于创建HttpClient时指定客户端的调度线程池。

  • id:1L << 4
  • 唯一标识:HTTP_SCHEDULED_THREAD_POOL
  • 等级:CLIENT
  • 属性 key:solpic.http.scheduled.thread.pool
  • 默认值:default
  • 支持客户端类型:ALL

HTTP_SSL_CONFIG

用于创建HttpClient时指定底层客户端初始化时的SSL配置。

  • id:1L << 5
  • 唯一标识:HTTP_SSL_CONFIG
  • 等级:CLIENT
  • 默认值:SSLConfig.NO
  • 支持客户端类型:ALL

HTTP_PROXY

用于创建HttpClient时指定代理地址,仅支持java.net.Proxy.Type.HTTP类型的代理。

  • id:1L << 6
  • 唯一标识:HTTP_PROXY
  • 等级:CLIENT
  • 属性 key:solpic.http.proxy
  • 默认值:ProxyConfig.NO
  • 支持客户端类型:ALL

HTTP_ENABLE_LOGGING

用于开启日志打印。

  • id:1L << 7
  • 唯一标识:HTTP_ENABLE_LOGGING
  • 等级:CLIENT
  • 属性 key:solpic.http.enable.logging
  • 默认值:false
  • 支持客户端类型:ALL

HTTP_ENABLE_EXECUTE_PROFILE

用于开启请求耗时统计。

  • id:1L << 8
  • 唯一标识:HTTP_ENABLE_EXECUTE_PROFILE
  • 等级:CLIENT
  • 属性 key:solpic.http.enable.execute.profile
  • 默认值:false
  • 支持客户端类型:ALL

HTTP_ENABLE_EXECUTE_TRACING

用于开启添加请求traceId

  • id:1L << 9
  • 唯一标识:HTTP_ENABLE_EXECUTE_TRACING
  • 等级:CLIENT
  • 属性 key:solpic.http.enable.execute.tracing
  • 默认值:false
  • 支持客户端类型:ALL

HTTP_FORCE_WRITE

用于开启客户端级别的强制设置请求有效载荷功能,有些请求方法例如GET不支持设置请求体,可以启用此选项强制为GET请求设置请求体。

  • id:1L << 10
  • 唯一标识:HTTP_FORCE_WRITE
  • 等级:CLIENT
  • 属性 key:solpic.http.force.write
  • 默认值:false
  • 支持客户端类型:ALL

HTTP_RESPONSE_COPY_ATTACHMENTS

用于开启把请求中的所有附件拷贝到响应中。

  • id:1L << 11
  • 唯一标识:HTTP_RESPONSE_COPY_ATTACHMENTS
  • 等级:CLIENT
  • 属性 key:solpic.http.response.copy.attachments
  • 默认值:true
  • 支持客户端类型:ALL

HTTP_CLIENT_METRICS

用于开启客户端调用指标统计。

  • id:1L << 12
  • 唯一标识:HTTP_CLIENT_METRICS
  • 等级:CLIENT
  • 属性 key:solpic.http.client.metrics
  • 默认值:false
  • 支持客户端类型:ALL

HTTP_CLIENT_ENABLE_CONNECTION_POOL

用于开启客户端的连接池功能。

  • id:1L << 13
  • 唯一标识:HTTP_CLIENT_ENABLE_CONNECTION_POOL
  • 等级:CLIENT
  • 属性 key:solpic.http.client.enable.connection.pool
  • 默认值:false
  • 支持客户端类型:除了default以外都支持,因为HttpURLConnection不支持配置连接池

HTTP_CLIENT_CONNECTION_POOL_CAPACITY

用于设置客户端的连接池的最大容量。

  • id:1L << 14
  • 唯一标识:HTTP_CLIENT_CONNECTION_POOL_CAPACITY
  • 等级:CLIENT
  • 属性 key:solpic.http.client.connection.pool.capacity
  • 默认值:128
  • 支持客户端类型:除了default以外都支持,因为HttpURLConnection不支持配置连接池

HTTP_CLIENT_CONNECTION_TTL

用于设置客户端的连接池中连接的最大存活周期,单位为毫米。

  • id:1L << 15
  • 唯一标识:HTTP_CLIENT_CONNECTION_TTL
  • 等级:CLIENT
  • 属性 key:solpic.http.client.connection.ttl
  • 默认值:1800000
  • 支持客户端类型:除了default以外都支持,因为HttpURLConnection不支持配置连接池

HTTP_CONNECT_TIMEOUT

用于设置客户端的连接超时时间,单位为毫秒。

  • id:1L << 16
  • 唯一标识:HTTP_CONNECT_TIMEOUT
  • 等级:CLIENT
  • 属性 key:solpic.http.connect.timeout
  • 默认值:5000
  • 支持客户端类型:ALL

HTTP_REQUEST_CONNECT_TIMEOUT

用于设置请求的连接超时时间,单位为毫秒。

  • id:1L << 17
  • 唯一标识:HTTP_REQUEST_CONNECT_TIMEOUT
  • 等级:REQUEST
  • 属性 key:solpic.http.request.connect.timeout
  • 默认值:5000
  • 支持客户端类型:defaultahc4

HTTP_SOCKET_TIMEOUT

用于设置客户端的socket超时时间,单位为毫秒。

  • id:1L << 18
  • 唯一标识:HTTP_SOCKET_TIMEOUT
  • 等级:CLIENT
  • 属性 key:solpic.http.socket.timeout
  • 默认值:5000
  • 支持客户端类型:ahc5ahc4

HTTP_REQUEST_SOCKET_TIMEOUT

用于设置请求的socket超时时间,单位为毫秒。

  • id:1L << 19
  • 唯一标识:HTTP_REQUEST_SOCKET_TIMEOUT
  • 等级:REQUEST
  • 属性 key:solpic.http.request.socket.timeout
  • 默认值:5000
  • 支持客户端类型:ahc4

HTTP_READ_TIMEOUT

用于设置客户端的读超时时间,单位为毫秒。

  • id:1L << 20
  • 唯一标识:HTTP_READ_TIMEOUT
  • 等级:CLIENT
  • 属性 key:solpic.http.read.timeout
  • 默认值:5000
  • 支持客户端类型:defaultokhttp

HTTP_WRITE_TIMEOUT

用于设置客户端的写超时时间,单位为毫秒。

  • id:1L << 21
  • 唯一标识:HTTP_WRITE_TIMEOUT
  • 等级:CLIENT
  • 属性 key:solpic.http.write.timeout
  • 默认值:5000
  • 支持客户端类型:okhttp

HTTP_TIMEOUT

用于设置客户端的调用超时时间,单位为毫秒。

  • id:1L << 22
  • 唯一标识:HTTP_TIMEOUT
  • 等级:CLIENT
  • 属性 key:solpic.http.timeout
  • 默认值:5000
  • 支持客户端类型:jhc

HTTP_CHUNK_SIZE

用于设置客户端级别的chunkSize

  • id:1L << 23
  • 唯一标识:HTTP_CHUNK_SIZE
  • 等级:CLIENT
  • 属性 key:solpic.http.chunk.size
  • 默认值:4096
  • 支持客户端类型:default

HTTP_REQUEST_FORCE_WRITE

用于开启请求级别的强制设置请求有效载荷功能,有些请求方法例如GET不支持设置请求体,可以启用此选项强制为GET请求设置请求体。

  • id:1L << 24
  • 唯一标识:HTTP_REQUEST_FORCE_WRITE
  • 等级:REQUEST
  • 属性 key:solpic.http.request.force.write
  • 默认值:false
  • 支持客户端类型:ALL

HTTP_REQUEST_CHUNK_SIZE

用于设置请求级别的chunkSize

  • id:1L << 25
  • 唯一标识:HTTP_REQUEST_CHUNK_SIZE
  • 等级:REQUEST
  • 属性 key:solpic.http.request.chunk.size
  • 默认值:4096
  • 支持客户端类型:default

HTTP_REQUEST_READ_TIMEOUT

用于设置请求级别的读超时时间,单位为毫秒。

  • id:1L << 26
  • 唯一标识:HTTP_REQUEST_READ_TIMEOUT
  • 等级:REQUEST
  • 属性 key:solpic.http.request.read.timeout
  • 默认值:5000
  • 支持客户端类型:default

HTTP_REQUEST_TIMEOUT

用于设置请求级别的调用超时时间,单位为毫秒。

  • id:1L << 27
  • 唯一标识:HTTP_REQUEST_TIMEOUT
  • 等级:REQUEST
  • 属性 key:solpic.http.request.timeout
  • 默认值:5000
  • 支持客户端类型:jhc

HTTP_CONNECTION_REQUEST_TIMEOUT

用于设置客户端级别的连接请求超时时间,单位为毫秒。

  • id:1L << 28
  • 唯一标识:HTTP_CONNECTION_REQUEST_TIMEOUT
  • 等级:CLIENT
  • 属性 key:solpic.http.connection.request.timeout
  • 默认值:5000
  • 支持客户端类型:ahc5ahc4

HTTP_REQUEST_CONNECTION_REQUEST_TIMEOUT

用于设置请求级别的连接请求超时时间,单位为毫秒。

  • id:1L << 29
  • 唯一标识:HTTP_REQUEST_CONNECTION_REQUEST_TIMEOUT
  • 等级:REQUEST
  • 属性 key:solpic.http.request.connection.request.timeout
  • 默认值:5000
  • 支持客户端类型:ahc5ahc4

HTTP_RESPONSE_TIMEOUT

用于设置客户端级别的响应超时时间,单位为毫秒。

  • id:1L << 30
  • 唯一标识:HTTP_RESPONSE_TIMEOUT
  • 等级:CLIENT
  • 属性 key:solpic.http.response.timeout
  • 默认值:5000
  • 支持客户端类型:ahc5

HTTP_REQUEST_RESPONSE_TIMEOUT

用于设置请求级别的响应超时时间,单位为毫秒。

  • id:1L << 31
  • 唯一标识:HTTP_REQUEST_RESPONSE_TIMEOUT
  • 等级:REQUEST
  • 属性 key:solpic.http.request.response.timeout
  • 默认值:5000
  • 支持客户端类型:ahc5

HTTP_CONNECTION_KEEPALIVE

用于设置客户端级别的连接keepalive周期,单位为毫秒。

  • id:1L << 32
  • 唯一标识:HTTP_CONNECTION_KEEPALIVE
  • 等级:CLIENT
  • 属性 key:solpic.http.connection.keepalive
  • 默认值:180000
  • 支持客户端类型:ahc5

HTTP_REQUEST_CONNECTION_KEEPALIVE

用于设置请求级别的连接keepalive周期,单位为毫秒。

  • id:1L << 33
  • 唯一标识:HTTP_REQUEST_CONNECTION_KEEPALIVE
  • 等级:REQUEST
  • 属性 key:solpic.http.request.connection.keepalive
  • 默认值:180000
  • 支持客户端类型:ahc5

贡献者

页面历史

Released under the MIT License.