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
risposta
Ho fatto questo in due passaggi. Prima creato un documento DOM, quindi creare SOAPMessage dal documento.
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;
}
Potresti elaborare la tua risposta un po 'di più? Grazie. –
Aggiunte altre spiegazioni, lasciando il codice così com'è per brevità. – tiurin
- 1. BigDecimal ha notazione scientifica nel messaggio soap
- 2. Perché un messaggio SOAP devono essere inviati tramite HTTP?
- 3. Un messaggio SOAP 1.2 non è valido se inviato a un SOAP 1.1 solo endpoint
- 4. Come rimuovere i dati "VsDebuggerCausalityData" dal messaggio SOAP?
- 5. Convalida messaggio SOAP contro WSDL con più XSD
- 6. Serializzare il messaggio WCF in modo binario e non come messaggio SOAP
- 7. Ordine elementi WSS4j durante la firma Messaggio SOAP
- 8. Errore irreversibile PHP: "L'azione SOAP specificata nel messaggio, '', non corrisponde all'azione HTTP SOAP"
- 9. Come analizzare XML SOAP?
- 10. SoapUI: è possibile generare automaticamente il valore da un elemento in un messaggio SOAP?
- 11. Qual è la codifica corretta di un valore booleano in un messaggio SOAP?
- 12. Differenza tra XML e SOAP
- 13. Come può un intercettore Spring Soap modificare il contenuto di un messaggio?
- 14. xmlns: attributo soap dell'elemento SOAP
- 15. "Nessuna intestazione d'azione è stato trovato" messaggio di errore durante l'uso di SOAP webservice
- 16. Creazione di un nuovo dizionario in una busta SOAP
- 17. creazione del jar del client da SOAP wsdl
- 18. Come ottenere un messaggio SOAP mentre si utilizza un client Axis 1.4 wsdl2java
- 19. Debug di trasmissione SOAP
- 20. C# SOAP - Errore nella deserializzazione corpo del messaggio di risposta (Magento API)
- 21. Come inviare la richiesta SOAP e la risposta SOAP Parse in formato XML in Android?
- 22. C# Xml in Http messaggio di richiesta messaggio Corpo
- 23. Richiesta HTTP SOAP PHP
- 24. Azione SOAP WSDL
- 25. Come unmarshall XML SOAP in oggetto Java
- 26. SOAP/REST Webservices XML Distinzione maiuscole/minuscole
- 27. Creazione di una chiamata SOAP utilizzando PHP con un corpo XML
- 28. di analisi SOAP risposta
- 29. WCF SOAP 1.2 servizio in attesa di tipo di contenuto SOAP 1.1
- 30. Node.js: come consumare SOAP servizio Web XML
è possibile utilizzare il pacchetto java.xml.soap per creare un messaggio SOAP – ChadNC