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>
?
?
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。