Преобразование 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 или даже как строку (просто хочу посмотреть содержимое, чтобы сгенерировать ответ).
Как я могу это сделать?
Ответы
Ответ 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());