2012-11-01 12 views
10

Hoh posso creare un messaggio SOAP da una rappresentazione String di un intero messaggio SOAP? Il motivo per cui sto cercando di farlo è che ho un gestore SOAP per un servizio web in cui catturo il messaggio SOAP. Devo conservare l'intero messaggio SOAP nel servizio web per inviarlo a un altro componente. In questo momento, il servizio Web rimuove le informazioni sulla busta SOAP. Quindi nel gestore ho fatto una copia del messaggio SOAP, base64 lo ha codificato, rimosso il contenuto originale del corpo e aggiunto la stringa codificata. Nel servizio Web sto tentando di decodificare il corpo (messaggio SOAP codificato) e ricostruirlo come messaggio SOAP per inviarlo a un altro componente.Creazione di un messaggio SOAP da XML stringa di intero messaggio SOAP

+0

è possibile utilizzare il pacchetto java.xml.soap per creare un messaggio SOAP – ChadNC

risposta

2

Ho fatto questo in due passaggi. Prima creato un documento DOM, quindi creare SOAPMessage dal documento.

50

As per Javadoc, javax.xml.soap.MessageFactory creare metodi precompilare il messaggio SOAP con gli oggetti necessari come busta, corpo, intestazione assicurando che il messaggio sia correttamente convogliato. Tuttavia, l'unica variante del metodo createMessage che accetta i dati del messaggio, accetta come InputStream. Quindi è necessaria una conversione da String a InputStream, ovvero la creazione di un nuovo flusso di byte da byte di stringa.

Questo è un esempio semplificato per brevità. Nel codice di applicazione si può evitare di creare una fabbrica su ogni chiamata al metodo per l'estrazione a un campo/costante, specificare necessaria versione del protocollo SOAP, diversi set di caratteri, ecc

private SOAPMessage getSoapMessageFromString(String xml) throws SOAPException, IOException { 
    MessageFactory factory = MessageFactory.newInstance(); 
    SOAPMessage message = factory.createMessage(new MimeHeaders(), new ByteArrayInputStream(xml.getBytes(Charset.forName("UTF-8")))); 
    return message; 
} 
+0

Potresti elaborare la tua risposta un po 'di più? Grazie. –

+1

Aggiunte altre spiegazioni, lasciando il codice così com'è per brevità. – tiurin

Problemi correlati