web service 采用https 的问题

最近一个项目,接口包含了web service接口,想想很简单的(以前都没有使用ssl,没想到ssl会遇到一些麻烦),就是调用别人的web service,开始用了xfire来做,通过wsdl很快生成了代码,写好测试类,运行,错误出现了javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 这样的异常,初步判断是ssl的问题。找了xfire的文档,发现,如果要使用https的连接,需要相应的处理。于是在代码前加入[code]ProtocolSocketFactory easy = new EasySSLProtocolSocketFactory();
Protocol protocol = new Protocol("https", easy, 80);
Protocol.registerProtocol("https", protocol);[/code]
再运行刚才的错误消失了,又出现了新的问题org.codehaus.xfire.fault.XFireFault: No Deserializer found to deserialize a 'urn:pronto.creditReserveAPI.ver1:ns2:in0' using encoding style 'null'.不知道什么原因,google的大半天也没有解决(用axis调通后怀疑xfire生成的问题,不知道那位大侠遇到过如此问题,不吝指教),最后没有办法,决定换axis试试,生成代码也很顺利,同样遇到https的问题,这次的解决办法是参考了[color=red][url]http://wwwww.iteye.com/blog/94854[/url][/color]的文章(在此谢谢了,帮了个大忙)(从ie导出证书,并在程序设置System.setProperty("javax.net.ssl.trustStore","D:/test/urltest/crt");或者在运行java时加入参数:-Djavax.net.ssl.trustStore=D:/test/urltest/crt. ),配置了客户端证书,然后测试,终于测试顺利通过。后话,在axis中出现PKIX path building failed的错误的时候,不知道还有没有别的办法进行处理,有时间再研究这个问题了。btw:(O'Reilly 的java security 第2版,里面的接口已经过时了,但是原理讲的很清楚)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值