Получение необработанного 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 на стороне клиента.
Статья

Это широко не документировано, но вы можете использовать интерфейс Dispatch для реализации клиентов JAXWS, которые работают напрямую с XML. Здесь и здесь есть несколько статей для начала работы.

Другие вопросы по тегам