简体   繁体   English

在Java中通过SSL消耗WebService

[英]Consuming a WebService over SSL in Java

I want to consume a web service in Java and I am using JAX.WS. 我想使用Java使用Web服务,并且正在使用JAX.WS。 Everything is working fine until I try to consume a webservice over SSL (https). 在尝试通过SSL(https)使用Web服务之前,一切工作正常。 I have added the certificate of the site to keystore using keytool. 我已使用keytool将站点的证书添加到keystore中。 Still no success. 仍然没有成功。 Anyone has done it before ? 有人做过吗? The webservice is from a third party payment gateway like paypal-payflo etc... so regular webservice whose certificate comes from Verisign. 该Web服务来自第三方支付网关,例如paypal-payflo等。因此,常规Web服务的证书来自Verisign。 Any tip would help. 任何提示都会有所帮助。 It is a SOAP webservice with wsdl. 它是带有wsdl的SOAP Web服务。

The error trace: 错误跟踪:

Exception in thread "main" javax.xml.ws.WebServiceException: Failed to access the WSDL at: xxxxx.xxxxxx.xxx/creditcardWS/CreditCardService/v1?wsdl. 线程“主”中的异常javax.xml.ws.WebServiceException:无法访问位于xxxxx.xxxxxx.xxx/creditcardWS/CreditCardService/v1?wsdl的WSDL。 It failed with: Got Connection refused: connect while opening stream from xxxxxx.xxxxxx.xxx/creditcardWS/CreditCardService/v1?wsdl. 它失败并显示:拒绝连接:打开来自xxxxxx.xxxxxx.xxx/creditcardWS/CreditCardService/v1?wsdl的流时连接。 at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLPars‌​er.java:173) at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.ja‌​va:155) at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.ja‌​va:120) at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.jav‌​a:260) at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:2‌​23) at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:1‌​71) at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java‌​:96) 在com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.ja‌)上com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:173) va:155)com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.ja‌va:120)com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate。 jav‌a:260)com.sun.xml.internal.ws.client.WSServiceDelegate。(WSServiceDelegate.java:2‌23)at com.sun.xml.internal.ws.client.WSServiceDelegate。(WSServiceDelegate.java: 1‌71),位于com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java96:96)

Does setting your own keystore to javax.net.ssl.trustStore help? 将自己的密钥库设置为javax.net.ssl.trustStore是否有帮助?

String keystorePath = "local.keystore";
System.setProperty("javax.net.ssl.trustStore", keystorePath);

Be sure to check if you can read from that path (current example assumes local.keystore is in classpath. 确保检查是否可以从该路径读取(当前示例假定local.keystore在类路径中)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM