本地通过httpclient调用微信接口,报错
java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException:the trustAnchors parameter must be non-empty

提示信息中有关于SSLException,于是给http请求设置ssl

调用又报了
sslSocketFactory(SSLSocketFactory) not supported on JDK 9+

跟代码发现是返回结果调用了jdk9的函数版本,更改Jdk版本
更新之后问题解决
okhttpclientUtil
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import javax.net.ssl.*;
import java.util.concurrent.TimeUnit;
/**
* @Author fulg
* @Date 2021/11/29 18:01
* @Version 1.0
*/
public class OkHttpClintUtil {
public static final MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
/**
* 默认-不信任自建ssl
*/
public static final OkHttpClient httpClient = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)//设置连接超时时间
.readTimeout(20, TimeUnit.SECONDS)//设置读取超时时间
.build();
/**
* 信任所有https-ssl证书
* 航信https-ssl证书是自建的(无耻,不舍得花钱购买)
* @return
*/
public static OkHttpClient getUnsafeOkHttpClient() {
try {
// Create a trust manager that does not validate certificate chains
final TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
}
}
};
// Install the all-trusting trust manager
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
// Create an ssl socket factory with our all-trusting manager
final javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.sslSocketFactory(sslSocketFactory);
builder.hostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
OkHttpClient okHttpClient = builder
.connectTimeout(10, TimeUnit.SECONDS)//设置连接超时时间
.readTimeout(20, TimeUnit.SECONDS)//设置读取超时时间
.build();
return okHttpClient;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}版权声明:本文为fuleigang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。