OkHttp之OkHttpClient.Builder

okhttp3.OkHttpClient.Builder
public static final class OkHttpClient.Builder

OkHttpClient.Builder是用来帮助创建OkHttpClient的;通过它我们可以方便的对OkHttpClient进行设置;

下面是OkHttpClient.Builder设置OkHttpClient的常用方法:

  • 设置连接的连接超时的时间,默认10s,timeout超时时间,unit时间单位,一般是TimeUnit.SECOND或者TimeUnit.MILLIMETER。
public OkHttpClient.Builder connectTimeout(long timeout,TimeUnit unit)
  • 设置连接的读取超时时间,默认10s,timeout超时时间,unit时间单位,读取超时时间指连接的套接字读取超时时间和某个响应数据的IO流的读取时间。
public OkHttpClient.Builder readTimeout(long timeout,TimeUnit unit)

  • 设置写入超时时间,默认10s,写入超时时间指写入数据时的IO流的操作时间。
public OkHttpClient.Builder writeTimeout(long timeout,TimeUnit unit)

  • 设置Cookie管理,用来处理接收到的Cookie,和请求时携带的Cookie。如果不设置,则请求不验证Cookie,也不提供Cookie。
public OkHttpClient.Builder cookieJar(CookieJar cookieJar)

  • 设置响应response的缓存
public OkHttpClient.Builder cache(@Nullable Cache cache)

  • 添加拦截器,添加多个自定义的拦截器,例如打印请求与响应内容,为请求添加统一header等。
public OkHttpClient.Builder addInterceptor(Interceptor interceptor)

  • 仅处理网络请求与响应,不处理缓存的
public OkHttpClient.Builder addNetworkInterceptor(Interceptor interceptor)

  • 设置连接出现问题时是否重连。默认在一下情况重连1.当主机有多个IP时,当前IP不可用,会自动重连找到可用IP。2.连接池套接字重用可以减少延迟,但这些连接有时候会超时。3.代理服务器不可用。PROXY会按顺序尝试多个代理服务器,最终建立直连连接。
public OkHttpClient.Builder retryOnConnectionFailure(boolean retryOnConnectionFailure)

  • 设置连接使用的HTTP代理。这个优先于proxySelector,尽在代理为空时被授予,默认代理为空。完全禁用代理使用proxy(Proxy.NO_PROXY)。
public OkHttpClient.Builder proxy(@Nullable Proxy proxy)

  • 设置要使用的代理选择策略。在没有明确指定代理的情况下使用。代理选择器可以返回多个代理;在这种情况下,它们将按顺序进行尝试,直到建立成功的连接为止。如果未设置,将使用系统范围的默认代理选择器。
public OkHttpClient.Builder proxySelector(ProxySelector proxySelector)

  • 设置用于安全HTTPS连接的套接字工厂和信任管理器。如果未设置,将使用系统默认值。大多数应用程序不应调用此方法,而是使用系统默认值。这些类包括特殊的优化,如果实现了这些修饰,这些优化可能会丢失。
public OkHttpClient.Builder sslSocketFactory(SSLSocketFactory sslSocketFactory,X509TrustManager trustManager)
如果需要,您可以用以下代码自己创建和配置默认值:
   TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
       TrustManagerFactory.getDefaultAlgorithm());
   trustManagerFactory.init((KeyStore) null);
   TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
   if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
     throw new IllegalStateException("Unexpected default trust managers:"
         + Arrays.toString(trustManagers));
   }
   X509TrustManager trustManager = (X509TrustManager) trustManagers[0];

   SSLContext sslContext = SSLContext.getInstance("TLS");
   sslContext.init(null, new TrustManager[] { trustManager }, null);
   SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

   OkHttpClient client = new OkHttpClient.Builder()
       .sslSocketFactory(sslSocketFactory, trustManager)
       .build();

  • 设置用于设置策略和执行异步请求的分派器。不得设置为空。
public OkHttpClient.Builder dispatcher(Dispatcher dispatcher)

  • 最后构建client
public OkHttpClient build()



你可能感兴趣的:(android,okhttp)