You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eclipse调用SOAP WebService出现SSLException异常问题咨询

异常根因

你遇到的javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?报错,核心是Java的HttpsURLConnection组件尝试和目标端口建立SSL握手时,收到了明文HTTP响应,而非预期的SSL协议报文。SOAP UI可正常访问的原因是该工具会自动识别服务实际支持的协议类型,不会强制执行HTTPS握手逻辑。

排查步骤
  • 核对apiURL配置:确认代码中使用的接口地址前缀是http://还是https://,如果目标SOAP服务实际仅开放HTTP协议接口,强行使用HttpsURLConnection发起请求就会触发该错误。
  • 核对端口配置:HTTPS默认端口为443,HTTP默认端口为80,如果目标服务的HTTPS端口为自定义端口,确认你填写的端口是服务实际开放HTTPS服务的端口,而非HTTP服务端口。
  • 验证JVM代理配置:Java程序运行时读取的是JVM级别的代理参数,和Eclipse全局代理配置相互独立。可在请求代码前增加如下输出,确认是否存在隐性代理配置将HTTPS请求转发到了HTTP代理端口:
System.out.println("HTTPS代理地址:" + System.getProperty("https.proxyHost"));
System.out.println("HTTPS代理端口:" + System.getProperty("https.proxyPort"));
  • 测试端口响应:使用telnet、nc等工具直接连接目标地址+端口,输入任意字符后查看返回内容,如果返回明文HTTP响应头,说明当前请求的端口不支持HTTPS协议。
修复方案
  • 若确认服务走HTTP协议:将HttpsURLConnection替换为普通HttpURLConnection即可,修改后的代码如下:
URL u = new URL(apiURL);
HttpURLConnection uc = (HttpURLConnection) u.openConnection();
connection = uc;
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
OutputStream out = connection.getOutputStream();
Writer wout = new OutputStreamWriter(out);
wout.write(request);
wout.flush();
wout.close();
out.close();
  • 若确认服务必须走HTTPS协议:替换为正确的HTTPS接口地址和端口即可。
  • 若为JVM代理配置错误:可在代码初始化阶段修正或禁用HTTPS代理:
// 禁用HTTPS代理
System.setProperty("https.proxyHost", "");
System.setProperty("https.proxyPort", "");

内容的提问来源于stack exchange,提问作者Chandragiri Giribabu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 15:06:04