【问题标题】:Jax-ws with https url ends up as http带有 https url 的 Jax-ws 以 http 结尾
【发布时间】: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 可以工作,我认为服务器也可以工作?

标签: java https jax-ws


【解决方案1】:

一个原因可能是 WSDL 引用了 http URL。

新的 MyServiceInterface(新 网址("https://acme.com/services/MyService.svc?wsdl")) .getMyPort().test();

我建议下载https://acme.com/services/MyService.svc?wsdl 并查看<address><service> 中的端点。如果它看起来像这样:

<soap:address location="http://acme.com/services/MyService.svc"/>

这可能是您在javax.xml.ws.service.endpoint.address 中看到的原因。

如果是这种情况并且您无法控制/修复远程 WSDL,您可能需要以编程方式覆盖端点:

MyServicePort myPort = new MyServiceInterface(new URL("https://acme.com/services/MyService.svc?wsdl")).getMyPort();
// set endpoint to use https
String endpointURL = "https://acme.com/services/MyService.svc";
BindingProvider bp = (BindingProvider) myPort;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
myPort.test();

【讨论】:

  • 我会检查一下,作为旁注,我通过手动设置属性使其工作。只是为了解决下一个问题(当然),使用 jax-b 生成名称错误的 xml。嗯,作为开发人员的生活:p
  • 检查了WSDL,你是对的,服务元素内的地址元素有一个http URL。这可以称为错误吗?还是仅仅是 .NET 创建的 wsdls 中的事情?
  • 你避免了我很多头晕!我试图解决系统管理员的问题,但没有成功。我注意到 wsdl 中的 http 引用,但我不确定它对客户端调用有影响(设置了不同的端点)。我试过你的解决方案,效果很好;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 2011-12-16
  • 2013-03-13
  • 1970-01-01
  • 2015-12-13
相关资源
最近更新 更多