Intro OKHttp defaults settings
這篇介紹OKHttp defaults settings。
初始預設用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| private OKHttpClient() { try {
OkHttpClient.Builder client = new OkHttpClient.Builder();
// 對同一個網站最多保持多少的 keep-alive connection client.connectionPool(new ConnectionPool(10, 6, TimeUnit.SECONDS)); client.connectTimeout(CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS); client.readTimeout(SOCKET_HOLD_TIMEOUT, TimeUnit.MILLISECONDS); client.writeTimeout(SOCKET_HOLD_TIMEOUT, TimeUnit.MILLISECONDS); //retry機制由程式精準控制 client.retryOnConnectionFailure(false);
// 設定thread pool Dispatcher dispatcher = new Dispatcher(service);
// 可以同時發起的連線數量 dispatcher.setMaxRequests(MAX_TOTAL);
// 對同一站點最大可以發起的連線數 dispatcher.setMaxRequestsPerHost(MAX_PER_ROUTE);
client.dispatcher(dispatcher);
// 接收所有SSL憑證,並省略驗證 client.sslSocketFactory(sslSocketFactory(), (X509TrustManager) trustAllCerts[0]); client.hostnameVerifier(hostnameVerifier);
this.client = client.build();
} catch (Exception e) { log.error(e.getMessage(), e); } }
|
接收所有SSL憑證,並省略驗證
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| // 預設忽略證書的驗證 private TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
@Override public void checkClientTrusted(X509Certificate[] chain, String authType) { }
@Override public void checkServerTrusted(X509Certificate[] chain, String authType) { }
@Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[]{}; } }};
/** * 配置一個HostnameVerifier來忽略host驗證 * 否則可能會出現請求證書和伺服器的證書不一致的錯誤 * * @return */ private HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override public boolean verify(String hostname, SSLSession session) { return true; } };
|