webservice 异常总结《转》

14 篇文章 0 订阅
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Java WebService 客户端中,可能会遇到“握手异常”(handshake exception),这通常是由于 SSL 证书不受信任或证书过期等原因导致的。 解决方法如下: 1. 导入服务器的 SSL 证书 在 Java WebService 客户端中,可以使用 keytool 工具将服务器的 SSL 证书导入到客户端的信任库中。具体步骤如下: 1)使用浏览器访问 WebService 服务器,如 https://example.com/Service?wsdl。 2)在浏览器中点击锁图标,查看证书信息。 3)将证书保存到本地,如 example.cer。 4)使用 keytool 工具将证书导入到客户端的信任库中: ``` keytool -import -alias example -file example.cer -keystore cacerts ``` 其中,cacerts 是 Java 安装目录下 jre/lib/security 目录中的一个文件,用于保存信任的证书。 2. 关闭 SSL 验证 在测试环境中,可以通过关闭 SSL 验证来解决“握手异常”问题。具体步骤如下: 1)创建一个 TrustManager,用于跳过 SSL 验证: ``` TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; ``` 2)创建一个 SSLContext,并使用上面创建的 TrustManager: ``` SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); ``` 3)将 SSLContext 设置到 HttpsURLConnection 中: ``` HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); ``` 注意:在生产环境中,不建议关闭 SSL 验证。 总结: 以上两种方法都可以解决“握手异常”问题,具体选择哪种方法,要根据实际情况来决定。在生产环境中,建议使用第一种方法,即导入服务器的 SSL 证书。在测试环境中,可以使用第二种方法,即关闭 SSL 验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值