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>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值