日期:2014-05-20  浏览次数:20753 次

求助,对于SOAP 消息,是否可以通过遍历xml的方式 遍历SOAPBODY
小弟 初学webservice, 今天尝试写了一个遍历SOAP 消息体的方法 ,可是运行一直有问题 , 检查了几次也没查出问题来 ,是不是SOAP消息 ,不能用遍历XML 的方式遍历 ? 下面是我写的遍历的两个方法:请个位高手帮忙看一下 ,小弟不胜感激 
public boolean handleMessage(SOAPMessageContext ctx) {

Boolean request_p=(Boolean)ctx.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if(request_p){
SOAPMessage msg=ctx.getMessage();
try {
SOAPBody body=msg.getSOAPBody();
System.out.println(body.getTextContent());
Iterator<SOAPElement> iterator=body.getChildElements();
PrintBody(iterator,null);
} catch (SOAPException e) {
e.printStackTrace();
}
}

return false;
}

private void PrintBody(Iterator<SOAPElement> iterator,String side){
while(iterator.hasNext()){
SOAPElement element=(SOAPElement)iterator.next();
System.out.println("Local Name:"+element.getLocalName());
System.out.println("Node Name:"+element.getNodeName());
PrintBody(element.getChildElements(), side+"-----");
}
}

------解决方案--------------------
可以这么搞的,只是很麻烦,不知道你报的什么错

web services客户端无非以下几种形式:

通过wsdl生成java —— 缺乏灵活性,工作量小
以java对象形式拼soap的payload部分或整个message —— 工作量中等,有灵活性

自己用String拼soap报文,并解析接受到的xml报文——相当有灵活性,工作量繁重