Получение необработанного XML-ответа от клиента веб-службы Java
Я пытаюсь получить необработанный XML-ответ от веб-службы вместо обычного набора POJO.
Я использую клиент веб-сервиса, который я сгенерировал (поэтому у меня есть доступ к коду клиента) из WSDL и некоторых схем. Клиент сгенерирован в RAD 7.5, я думаю, используя JAX-WS. Я смотрел на сам код клиента, но я даже не уверен, обрабатывает ли клиентский код когда-либо необработанный XML или передает его другим библиотекам.
2 ответа
Решение
Вы можете сделать это с помощью
javax.xml.ws.handler.soap.SOAPHandler<javax.xml.ws.handler.soap.SOAPMessageContext>
Вы можете просто получить сообщение, используя SOAPMessageContext#getMessage()
и конвертировать сообщение в строку, используя метод
public static String getXmlMessage(SOAPMessage message) throws Exception
{
ByteArrayOutputStream os = new ByteArrayOutputStream();
message.writeTo(os);
final String encoding = (String) message.getProperty(SOAPMessage.CHARACTER_SET_ENCODING);
if (encoding == null)
{
return new String(os.toByteArray());
}
else
{
return new String(os.toByteArray(), encoding);
}
}
Также вы можете прочитать здесь о обработчике SOAP на стороне клиента.
Статья