发送https请求返回Unrecognized SSL message

qq_34162553 2020-09-02 04:08:40
看了好多帖子都说是把url中的https改为http。 但是对方说提供的服务是https。 有什么解决方法吗?
...全文
8138 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
public class SkipSslVerificationHttpRequestFactory extends SimpleClientHttpRequestFactory {

    @Override
    protected void prepareConnection(HttpURLConnection connection, String httpMethod)
            throws IOException {
        if (connection instanceof HttpsURLConnection) {
            prepareHttpsConnection((HttpsURLConnection) connection);
        }
        super.prepareConnection(connection, httpMethod);
    }

    private void prepareHttpsConnection(HttpsURLConnection connection) {
        connection.setHostnameVerifier(new SkipHostnameVerifier());
        try {
            connection.setSSLSocketFactory(createSslSocketFactory());
        } catch (Exception ex) {
            // Ignore
        }
    }

    private SSLSocketFactory createSslSocketFactory() throws Exception {
        SSLContext context = SSLContext.getInstance("TLS");
        context.init(null, new TrustManager[]{new SkipX509TrustManager()},
                new SecureRandom());
        return context.getSocketFactory();
    }

    private class SkipHostnameVerifier implements HostnameVerifier {

        @Override
        public boolean verify(String s, SSLSession sslSession) {
            return true;
        }

    }

    private static class SkipX509TrustManager implements X509TrustManager {

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[0];
        }

        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) {
        }

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) {
        }

    }
}
@Bean public RestTemplate restTemplate() { SkipSslVerificationHttpRequestFactory factory = new SkipSslVerificationHttpRequestFactory(); factory.setReadTimeout(10000); factory.setConnectTimeout(15000); return new RestTemplate(factory); }
tianfang 2020-09-02
  • 打赏
  • 举报
回复
你使用什么版本的jdk和httpclient模块?
qybao 2020-09-02
  • 打赏
  • 举报
回复
有可能提供的服务用的不是https端口 https://blog.csdn.net/dtlscsl/article/details/50462721
dkwuxiang 2020-09-02
  • 打赏
  • 举报
回复
1. 让对方提供证书; 2. 配置 发送https请求时 忽略证书;

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧