前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >okhttp之OkHttpClient

okhttp之OkHttpClient

作者头像
103style
发布2022-12-19 13:39:33
1.5K0
发布2022-12-19 13:39:33
举报
文章被收录于专栏:Android开发经验分享

转载请以链接形式标明出处: 本文出自:103style的博客


base on 3.12.0


简介

OkHttpClient是通过 builder 模式来为http请求设置相关配置。

创建单个OkHttpClient实例并将其用于所有HTTP调用时,OkHttp的性能最佳。 这是因为每个OkHttpClient都拥有自己的连接池和线程池。 重用连接和线程可减少延迟并节省内存。 相反,为每个请求创建一个OkHttpClient会浪费空闲池上的资源。

当需要多个OkHttpClient时,我们可以使用newBuilder()自定义共享的OkHttpClient实例。 这将构建共享相同连接池,线程池和配置。


OkHttpClient 相关的配置方法

默认配置
代码语言:javascript
复制
public Builder() {
   dispatcher = new Dispatcher();
   protocols = DEFAULT_PROTOCOLS;
   connectionSpecs = DEFAULT_CONNECTION_SPECS;
   eventListenerFactory = EventListener.factory(EventListener.NONE);
   proxySelector = ProxySelector.getDefault();
   if (proxySelector == null) {
       proxySelector = new NullProxySelector();
   }
   cookieJar = CookieJar.NO_COOKIES;
   socketFactory = SocketFactory.getDefault();
   hostnameVerifier = OkHostnameVerifier.INSTANCE;
   certificatePinner = CertificatePinner.DEFAULT;
   proxyAuthenticator = Authenticator.NONE;
   authenticator = Authenticator.NONE;
   connectionPool = new ConnectionPool();
   dns = Dns.SYSTEM;
   followSslRedirects = true;
   followRedirects = true;
   retryOnConnectionFailure = true;
   callTimeout = 0;
   connectTimeout = 10_000;
   readTimeout = 10_000;
   writeTimeout = 10_000;
   pingInterval = 0;
}
超时相关的方法
  • 设置call完成的超时时间 默认值为0表示无超时时间。
    • callTimeout(long timeout, TimeUnit unit)
    • callTimeout(Duration duration)
  • 设置RealConnection连接 超时时间,默认值为 10s.
    • connectTimeout(long timeout, TimeUnit unit)
    • connectTimeout(Duration duration)
  • 设置RealConnection读取 超时时间,默认值为 10s.
    • readTimeout(long timeout, TimeUnit unit)
    • readTimeout(Duration duration)
  • 设置RealConnection写入 超时时间,默认值为 10s.
    • writeTimeout(long timeout, TimeUnit unit)
    • writeTimeout(Duration duration)
  • 设置 HTTP/2web socket ping之间的间隔。默认 0 表示客户端禁用客户端启动的ping.
    • pingInterval(long interval, TimeUnit unit)
    • pingInterval(Duration duration)
配置Http连接的代理

proxy 优先与 proxySelector.

  • proxy(@Nullable Proxy proxy) 禁用代理可使用 Proxy.NO_PROXY.
  • proxySelector(ProxySelector proxySelector) 设置未指定proxy时的代理策略
设置执行异步请求的策略
  • dispatcher(Dispatcher dispatcher)
添加和获取可修改的拦截器
  • interceptors() 获取可修改的拦截器列表
  • addInterceptor(Interceptor interceptor) 添加自定义拦截器
  • networkInterceptors() 返回可观察到单个网络请求和响应的拦截器的可修改列表。这些拦截器必须只调用一次。
  • addNetworkInterceptor(Interceptor interceptor) 添加网络拦截器
事件响应回调监听
  • eventListener(EventListener eventListener)
  • eventListenerFactory(EventListener.Factory eventListenerFactory) 监听请求相关的回调,如下图:
重定向
  • followSslRedirects(boolean followProtocolRedirects)
  • followRedirects(boolean followRedirects) 是否可以重定向,默认可以。
socket相关
  • socketFactory(SocketFactory socketFactory)
  • sslSocketFactory(SSLSocketFactory sslSocketFactory)
  • sslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager) 设置相关的socket工厂。
证书认证相关
  • hostnameVerifier(HostnameVerifier hostnameVerifier) 设置用于确认响应证书是否适用于 HTTPS 连接的请求主机名。
  • certificatePinner(CertificatePinner certificatePinner) 设置证书固定器,以限制受信任的证书。
  • authenticator(Authenticator authenticator) 设置用于响应原始服务器质询的身份验证器
  • proxyAuthenticator(Authenticator proxyAuthenticator) 设置用于响应代理服务器质询的身份验证器
其他
  • retryOnConnectionFailure(boolean retryOnConnectionFailure) 配置客户端连接出现问题时,是否重连。默认重连。
  • cookieJar(CookieJar cookieJar) 设置可以接受来自传入HTTP响应的cookie的处理程序,并提供cookie传出HTTP请求。
  • cache(@Nullable Cache cache) 设置响应缓存以用于读取和写入缓存的响应。
  • dns(Dns dns) 设置用于查找主机名 IP 地址的 DNS 服务。
  • connectionPool(ConnectionPool connectionPool) 设置 HTTPHTTPS 连接的连接池。
  • protocols(List<Protocol> protocols) 配置此客户端用于与远程服务器通信的协议

以上

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • OkHttpClient 相关的配置方法
    • 默认配置
      • 超时相关的方法
        • 配置Http连接的代理
          • 设置执行异步请求的策略
            • 添加和获取可修改的拦截器
              • 事件响应回调监听
                • 重定向
                  • socket相关
                    • 证书认证相关
                      • 其他
                      相关产品与服务
                      云服务器
                      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档