本地通过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); } } }