【发布时间】:2016-05-11 11:12:41
【问题描述】:
我正在尝试通过 https 使用 JAX-WS 调用 Web 服务(用 C# 开发)。我已经尝试通过 SoapUI 设置调用,这很有效。
但是,当尝试通过生成的 jax-ws 客户端执行相同操作时,我得到的只是 301 响应。这类似于我使用 SoapUI 和同一服务的 http url 得到的结果,而且wireshark 告诉我我做了一个 HTTP (HTTP/XML) POST 操作。这让我相信,出于某种原因,我生成的 JAX-WS 客户端尝试通过 http 而不是 https 调用。
示例代码:
new MyServiceInterface(new URL("https://acme.com/services/MyService.svc?wsdl"))
.getMyPort().test();
如您所见,我在创建客户端时提供了一个 https 网址。为了确保 JAX-WS 使用 https,还需要其他什么吗?命名空间 URI 都是 http,这会不会导致问题?
更新:
我已经使用此处接受的答案中的指南为问题中的服务实现了 SOAP 请求:Working Soap client example 几乎重复了来自 SoapUI 的信息,现在它给了我正确的 200 响应。
更新 2:
在调试我的 JAX-WS-client 时,我发现了这个属性:
"javax.xml.ws.service.endpoint.address" -> "http://acme.com/services/MyService.svc"
这有http,而不是https。相关吗?
更新 3:
当使用调试器将“javax.xml.ws.service.endpoint.address”更改为 https url,而不是 http,我的客户端工作正常。但是为什么是http开头呢?
【问题讨论】:
-
看起来是服务器端的问题。试试443端口是否可以访问服务器。
-
既然 SoaPUI 可以工作,我认为服务器也可以工作?