拦截器代码
@Component
@Slf4j
public class HttpsInterceptor implements Interceptor {
@Override
public boolean beforeExecute(ForestRequest request) {
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
// 忽略证书验证
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[]{};
}
}
};
SSLContext sslContext = null;
try {
sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new SecureRandom());
} catch (Exception e) {
e.printStackTrace();
}
// 设置hostname verifier
HostnameVerifier allHostsValid = (hostname, session) -> true;
// 创建OkHttpClient实例
clientBuilder.sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustAllCerts[0])
.hostnameVerifier(allHostsValid);
OkHttpClient client = clientBuilder.build();
// 设置Forest的OkHttpClient
request.setBackendClient(client);
return true;
}
}