Подтвердить что ты не робот

Преобразование StreamResult в строку или xml

Используя spring ws, чтобы получить StreamResult, как показано ниже

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

Я получаю результат, но я хочу извлечь его в какой-то xml или даже как строку (просто хочу посмотреть содержимое, чтобы сгенерировать ответ).

Как я могу это сделать?

4b9b3361

Ответ 1

Попробуйте следующее:

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();
}

Ответ 2

Вы можете получить читателя своего StreamSource, используя getReader(). Затем вы можете использовать read (char [] cbuf) для записи содержимого потока в массив символов, который можно легко преобразовать в строку и напечатать на консоли, если хотите.

Ответ 3

Если это не работает, попробуйте это

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

Предполагая, что у вас такая структура,

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;
}

Вы можете попробовать этот путь, хотя то же самое, хотел четко указать его

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