2014-04-22 13 views
18

Mit Feder ws die Stream wie untenConvert Stream bespannen oder xml

StreamSource source = new StreamSource(new StringReader(MESSAGE)); 
StreamResult result = new StreamResult(System.out); 
webServiceTemplate.sendSourceAndReceiveToResult("http://someUri", 
       source, new SoapActionCallback("someCallBack"), result); 
return result; 

ich das Ergebnis bekommen zu bekommen, aber ich mag es irgendeine Art von XML extrahieren oder sogar als String (Ich will nur den Inhalt sehen, um die Antwort zu erzeugen).

Wie kann ich das tun?

+1

http://stackoverflow.com/questions/22939440/how-to-get-soap-response-from-webservicetemplate/22939680#22939680 könnte – VirtualTroll

Antwort

32

Versuchen Sie dieses:

try { 
    StreamSource source = new StreamSource(new StringReader("<xml>blabla</xml>")); 
    StringWriter writer = new StringWriter(); 
    StreamResult result = new StreamResult(writer); 
    TransformerFactory tFactory = TransformerFactory.newInstance(); 
    Transformer transformer = tFactory.newTransformer(); 
    transformer.transform(source,result); 
    String strResult = writer.toString(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
4

Sie können den Reader Ihrer StreamSource mit getReader() abrufen. Sie sollten dann in der Lage sein, read (char [] cbuf) zu verwenden, um den Inhalt des Streams in ein Zeichenarray zu schreiben, das leicht in eine Zeichenkette umgewandelt und bei Bedarf auf die Konsole gedruckt werden kann.

+0

helfen Ich bin an nur Stream – user1609085

+0

Stream ist ein Schriftsteller Klasse, Sie Es können keine Daten von einer Writer-Klasse abgerufen werden, da alle an sie übergebenen Daten übergeben werden. Und speichert die Daten nicht. Siehe die Definition hier: http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/stream/StreamResult.html –

2

Wenn keines dieser Werke, versuchen Sie diese

System.out.println(result.getOutputStream().toString()); 

Sie haben diese Art von Struktur Unter der Annahme,

private static StreamResult printSOAPResponse(SOAPMessage soapResponse) throws Exception { 
    TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
    Transformer transformer = transformerFactory.newTransformer(); 
    Source sourceContent = soapResponse.getSOAPPart().getContent(); 
    System.out.print("\nResponse SOAP Message = "); 
    StreamResult result = new StreamResult(System.out); 
    transformer.transform(sourceContent, result); 
    return result; 
} 

Sie können auf diese Weise versuchen, , obwohl das gleiche, wollte es deutlich zu zeigen

System.out.println(printSOAPResponse(soapResponse).getOutputStream().toString());