1.SOAP消息的体组成:
SOAPMessage(an xml document)
SOAPPart
SOAPEnvelope
SOAPHeader(optional)
Headers(if any)
SOAPBody
XML Content or SOAPFault
AttachmentPart
MIME Headers
Content(XML or non-XML)
AttachmentPart
MIME Headers
Content(XML or non-XML)
....
2.利用代码创建一个SOAP消息内容,下面的test所示:
package com.samlai.Test;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
public class MyTest {
@org.junit.Test
public void Test(){
try {
//1.创建消息工厂
MessageFactory factory=MessageFactory.newInstance();
//2.根据消息工厂创建soapMessage
SOAPMessage message=factory.createMessage();
//3.创建创建SOAPPart
SOAPPart part=message.getSOAPPart();
//4.获取soapEnvelope
SOAPEnvelope envelope=part.getEnvelope();
//5.通过soapEnvelope有效的获取相应的Body和header等消息
SOAPBody body=envelope.getBody();
//6.根据Qname创建相应的节点(QName就是一个带有命名空间的)
QName qname=new QName("http://service.samlai.com/","add","ns");
//创建对应的节点来添加对应的内容信息
SOAPBodyElement ele=body.addBodyElement(qname);
ele.addChildElement("kjh").setValue("Mr.Lai");
ele.addChildElement("plo").setValue("ppp");
//打印信息
message.writeTo(System.out);
} catch (Exception e) {
e.printStackTrace();
}
}
}
得出消息体的打印的字符串内容:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><ns:add xmlns:ns="http://service.samlai.com/"><kjh>Mr.Lai</kjh><plo>ppp</plo></ns:add></SOAP-ENV:Body></SOAP-ENV:Envelope>