`
gjs_ht
  • 浏览: 8338 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

webservice的调用问题说明

阅读更多

上午遇见了一个很意外的事情,说明一下,基于soap消息的方式调用了一下webservice,获取结果结果是不正确的,代码如下

//转发消息并获取结果
SOAPMessage response = dispatch.invoke(message);
//解析结果,顺序与封装恰好一致,获取信封,获取body,转为 
System.out.println();
Document doc = response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument();
response.writeTo(System.out);

 打上断点以后,发现服务端也能接收到正常数据,也能返回。看一下输出:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Header/><S:Body/></S:Envelope>

 消息体是空的,也没有报错,经过了两三个小时我才发现问题所在:

 extractContentAsDocument方法将body的内容抽出放到doc中去了,如果在extractContentAsDocument前调用一下response.writeTo(System.out);就能显示正常的了。

代码改成这样

System.out.println("输出结果:");
//转发消息并获取结果
SOAPMessage response = dispatch.invoke(message);
//解析结果,顺序与封装恰好一致,获取信封,获取body,转为 
response.writeTo(System.out);
System.out.println();
Document doc = response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument();
response.writeTo(System.out);

 这次输出的数据:

输出结果:
第一次:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Header/><S:Body><ns2:addUserResponse xmlns:ns2="http://service.soap.org/"><user><id>12</id><nickname>tudou123</nickname><password>123123</password><username>xxx</username></user></ns2:addUserResponse></S:Body></S:Envelope>
第二次:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Header/><S:Body/></S:Envelope>

 

 

1
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics