gpt4 book ai didi

java - 从 Web 服务获取响应时出错非默认命名空间无法映射到空 URI

转载 作者:行者123 更新时间:2023-11-30 04:31:23 27 4
gpt4 key购买 nike

我正在尝试制作一个 java webservice 客户端。这是一个非常简单的服务,接收一个字符串并返回另一个字符串。我正在使用soapUI 测试该服务并且工作完美,但是当我尝试用java 对其进行编码时,它失败了。

这是我用来调用服务的代码

    QName QNAME_TYPE_STRING = new QName(nameSpaceURI,"string");
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName(nameSpaceURI, webServiceMethod));
call.addParameter("buil:arg0", XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType(QNAME_TYPE_STRING, String.class);
String ret = (String) call.invoke(new Object[]{"PARAMETER VALUE"});

endPoint 变量正确指向服务的 URL,并且:

nameSpaceURI = "http://build.response.service/";
webServiceMethod = "buildResponse";

问题是 webService 正确获取了参数,但响应中发生了一些事情:

Caused by: com.ctc.wstx.exc.WstxParsingException: Non-default namespace can not map to
empty URI (as per Namespace 1.0 # 2) in XML 1.0 documents
at javax.xml.stream.SerializableLocation@6fee8ce6

这是我在soapUI 上请求的示例

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:buil="http://build.response.service/">
<soapenv:Header/>
<soapenv:Body>
<buil:buildResponse>
<buil:arg0>PARAMETER VALUE</buil:arg0>
</buil:buildResponse>
</soapenv:Body>
</soapenv:Envelope>

这是soapUI 上的响应示例

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:buildResponse xmlns:ns1="http://build.response.service/">
<return xmlns="http://build.response.service/">
RESPONSE1,RESPONSE2,RESPONSE3
</return>
</ns1:buildResponse>
</soap:Body>
</soap:Envelope>

有什么想法吗?我认为这与响应有关,但我确实是 webServices 的新手(我知道...我知道...21 世纪...)。

一些更多信息:我无权使用 wsdl2java 也无权发布该服务的 wsdl(无论如何它都是自动生成的,我与它无关并且它不会改变)。对此表示抱歉,尽管有这些限制,但我希望能够帮助我。

谢谢!

最佳答案

天哪...太简单了,对调用参数做了这么小的改变:

call.addParameter(new QName(nameSpaceURI, "buil:arg0"),XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter(new QName(nameSpaceURI, "return"), XMLType.XSD_STRING, ParameterMode.OUT);

现在它就像一个魅力,希望这对某人有帮助。

关于java - 从 Web 服务获取响应时出错非默认命名空间无法映射到空 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14578788/

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