Java REST客户端调用HTTPS服务返回handshake_failure问题求助
整理后的HTTPS请求代码(Amazon Linux AWS实例部署)
嘿,我把你这段用于调用HTTPS Web服务的Java代码整理成更易读的格式了,同时结合你的部署环境给出了一点小建议:
public static <T> T postSecureJsonRequest(String url, Object request, Type responseType) throws Exception { BufferedReader br; HttpsURLConnection con = null; try { URL obj = new URL(null, url, new sun.net.www.protocol.https.Handler()); con = (HttpsURLConnection) obj.openConnection(); con.setReadTimeout(IntegrationConfiguration.getConnectionTimeOut()); // 你的代码看起来被截断了,后续可以补充完整的请求头设置、请求体写入等逻辑 con.setRequest... } finally { // 记得在finally块中释放资源,避免连接或流泄漏 if (br != null) { br.close(); } if (con != null) { con.disconnect(); } } }
针对Amazon Linux环境的小提示
- 如果你遇到SSL证书验证失败的问题,Amazon Linux默认的CA证书存放在
/etc/pki/tls/certs/ca-bundle.crt,可以确保你的JVM正确加载这个证书库,或者通过javax.net.ssl.trustStore系统属性手动指定。 - 尽量避免直接使用
sun.net.www.protocol.https.Handler,这属于Oracle JDK的内部API,可能在不同版本或开源JDK(比如Amazon Corretto)中存在兼容性问题,建议直接使用默认的URL处理逻辑(去掉URL构造器的第三个参数)。
内容的提问来源于stack exchange,提问作者Melad Basilius
相关产品推荐
相关产品推荐

