gpt4 book ai didi

java - SOAP 请求 JAX-WS 生成了错误的命名空间 URI

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:49 25 4
gpt4 key购买 nike

我想连接到 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/">

几乎不错,但还不够

最佳答案

解决方案很简单......

ListsSoap lisoap = listsService.getListsSoap12(); 

它返回 SOAP 1.2 的服务

关于java - SOAP 请求 JAX-WS 生成了错误的命名空间 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28988340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com