2016-09-14 2 views
0

Ich versuche, einen SOAP-Pull zu schreiben. Ich habe Schwierigkeiten, die Nachricht korrekt zu formatieren.Hinzufügen mehrerer URIs zu SOAP Envelope mit Java

ich nur mit dem mitgelieferten javax.xml.soap. * Bibliothek mit Exclipse

ich den Umschlag muß es mehrere URIs haben. Dies ist das Beispiel für die Verwendung mit SOAPUI.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sh="http://www.website.com/ems/soap/sh" xmlns:user="http://www.website.com/ems/soap/sh/userdata" xmlns:ser="http://www.website.com/ems/soap/sh/servicedata"> 

jedoch nach mehreren Tutorials der Suche durch bin ich nur in der Lage zu produzieren

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sh="http://www.website.com/ems/soap/sh"> 

Ich habe nicht in der Lage gewesen, eine Dokumentation zu finden, wie die erforderliche Leistung zu erzielen. Ich bin immer noch neu in SOAP und Java, also bin ich mir nicht sicher, wie ich genau artikulieren soll, was ich brauche.

Hier ist der Code, die ich bisher haben minus das Kind Elementabschnitt

MessageFactory messageFactory = MessageFactory.newInstance(); 
    SOAPMessage soapMessage = messageFactory.createMessage(); 
    SOAPPart soapPart = soapMessage.getSOAPPart(); 

    soapMessage.getSOAPPart().getEnvelope().setPrefix("soapenv"); 
    soapMessage.getSOAPPart().getEnvelope().removeNamespaceDeclaration("SOAP-ENV"); 
    soapMessage.getSOAPBody().setPrefix("soapenv"); 
    soapMessage.getSOAPHeader().setPrefix("soapenv"); 

    String serverURI = "http://www.website.com/ems/soap/sh"; 

    // SOAP Envelope 
    SOAPEnvelope envelope = soapPart.getEnvelope(); 
    envelope.addNamespaceDeclaration("sh", serverURI); 

Antwort

0

Wenn Sie diese Seife-Umschlag erhalten möchten,

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sh="http://www.website.com/ems/soap/sh" xmlns:user="http://www.website.com/ems/soap/sh/userdata" xmlns:ser="http://www.website.com/ems/soap/sh/servicedata"> 

Nur addNamespaceDeclaration nach dem Code wie folgt hinzufügen.

SOAPEnvelope envelope = soapPart.getEnvelope(); 
envelope.addNamespaceDeclaration("sh", serverURI); 

//added code here 
envelope.addNamespaceDeclaration("user", "http://www.website.com/ems/soap/sh/userdata"); 
envelope.addNamespaceDeclaration("ser", "http://www.website.com/ems/soap/sh/servicedata"); 
+0

Vielen Dank. Genau das habe ich gesucht. Ich habe deine Antwort gewählt. – DPersson

Verwandte Themen