OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.sslSocketFactory(new SSLSocketFactory() {
...
...
@Override
public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {
//此方法为真正创建SSL Socket的地方
SSLCertificateSocketFactory sslSocketFactory = (SSLCertificateSocketFactory) SSLCertificateSocketFactory
.getInsecure(0,null);
SSLSocket sslSocket = (SSLSocket) sslSocketFactory
.createSocket(s, host, port, autoClose);
sslSocket.setEnabledProtocols(sslSocket.getSupportedProtocols());
//method 1, 直接设置SNIHostName, API 24及以上支持
SSLParameters parameters = new SSLParameters();
SNIHostName sniHostName = new SNIHostName("sni.cashzhang.com");
List list = new ArrayList<SNIHostName>();
list.add(sniHostName);
parameters.setSer0verNames(list);
sslSocket.setSSLParameters(parameters);
//method 2, Hook SSLSocket.setHostname(p1)方法
try {
Method method = sslSocket.
...
Read more