2017-06-23 6 views
0
how to add <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> in xml soap request. 

Ma demande d'échantillon est donné below.I créé JAXB classes annotées et rangea l'objet au format xml, mais je dois ajouter au-dessus envlope du savon et du corps demande avant d'envoyer une requête au serveur.comment ajouter <soap: Envelope> et <soap:body> à la demande xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<StatusRequest> 
<AccountID>231</AccountID> 
<PassPhrase>sddddd</PassPhrase> 
<StatusList> 
<PICNumber>111111</PICNumber> 
</StatusList> 
<Test>Y</Test> 
</StatusRequest> 

Veuillez fournir un exemple de programme.

+1

Utilisez-vous une API WS? Comme Axis/Axis2/CXF/JAX-WS? –

Répondre

1

Utilisez un javax.xml.soap.

Vous devez obtenir un document de l'objet que vous voulez mettre à l'intérieur de l'enveloppe (le marshal avec JAXB, dans l'exemple) et le mettre dans le corps.

De cette façon:

MessageFactory mfactory = MessageFactory.newInstance(); 
SOAPMessage soapMessage = mfactory.createMessage(); 
SOAPBody soapBody = petition.getSOAPBody(); 
soapBody.addDocument(marshaller.marshallDoc(obj)); 
soapMessage.saveChanges(); 

De cette façon, quand vous faites:

soapMessage.writeTo(System.out); 

Vous verrez une partie SOAP dans la sortie.

0
SOAPPart soapPart = message.getSOAPPart(); 
// Obtain SOAP Part 

SOAPEnvelope envelope = soapPart.getEnvelope(); 
// Obtain Envelope from SOAP Part 

SOAPHeader header = envelope.getHeader(); 
// Obtain Header from Envelope 

SOAPBody body = envelope.getBody(); 
// Obtain Body from Envelope 

QName headerName = new QName("namespaceURI", "localPart"); 
// SOAPHeaderElement must have an associated QName object. 

SOAPHeaderElement headerElement = header.addHeaderElement(headerName); 
// Create new SOAPHeaderElement object initialized with the specified Qname 
// and add it to this SOAPHeader object. 

headerElement.addAttribute(new QName("localPart"), "valueToAdd"); 
// Add attribute to header 

QName bodyName = new QName("namespaceURI", "localPart"); 
// SOAPBodyElement must have an associated QName object. 

SOAPBodyElement bodyElement = body.addBodyElement(bodyName); 
// Add Body Element 

Vous pouvez ce et JavaDocs correspondant pour SAAJ.