繁体   English   中英

生成的SOAP请求JAX-WS错误的名称空间URI

[英]SOAP Request JAX-WS wrong namespace URI generated

我想连接到SOAP服务。

使用wsimport我已经从远程wsdl生成了类

我的代码:

    Lists listsService = new Lists();
    ListsSoap lisoap = listsService .getListsSoap(); 

    ((BindingProvider) si).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "MY_USER");
    ((BindingProvider) si).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "“MY_PASS");

    ((BindingProvider) si).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://<SOME_REMOTE_URL>/Lists.asmx");


   GetListCollectionResult coll = si.getListCollection();

我已经跟踪了请求xml:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap1="http://schemas.microsoft.com/sharepoint/soap/">
   <S:Header/>
   <S:Body>
      <soap1:GetListCollection/>
   </S:Body>
</S:Envelope>

http://schemas.xmlsoap.org/soap/envelope-错误!

在Java和SOAP-UI中都返回空结果

正确的URI应该是http://www.w3.org/2003/05/soap-envelope

它可以在SOAP-UI中工作,但是我不知道如何在Java中为JAX-WS设置它

我怀疑它与SOAP版本1与1.2有关

更新:
试图运行此:

 soapEnv.setAttributeNS("http://schemas.xmlsoap.org/soap/envelope/", "S", "http://www.w3.org/2000/xmlns/");

但是现在的输出是:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" ns0:S="http://www.w3.org/2000/xmlns/">

几乎不错,但不是enoguh

解决方案很简单...

ListsSoap lisoap = listsService.getListsSoap12(); 

它返回SOAP 1.2的服务

如果使用JAX-WS从WSDL生成代码,则URI映射应该很好,但是使用HTTP-BASIC coudl进行身份验证会导致代码使用问题。 也许这可以帮助:

JAX WS客户端无法认证

它指的是身份验证问题。

暂无
暂无

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

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