2016-05-30 4 views
0

У меня есть клиент soap, который вызывает метод SOAP WS. Проблема заключается в том, что когда я получаю данные в JAVA, используя нижеприведенный код, java анализирует SOAPMessage, используя некоторую стандартную кодировку. В результате, когда я печатаю ответ WS, я вижу некоторые символы мусора.Проблема с кодированием ответа SOAP

SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance(); 
SOAPConnection connection = connectionFactory.createConnection(); 
SOAPMessage response = connection.call(soapMessage, endpoint); 

Итак, есть ли какой-либо способ, с помощью которого можно задавать или заставить .call() метод выше, чтобы использовать определенную кодировку.

Я проверил WS, используя вкладку SOAP UI и RAW XML в SOAP UI, показывает действительные символы.

Edit: Am печать и проверка наличие мусорных символов с помощью кода ниже:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
response.writeTo(baos); 
String s2 = new String(baos.toByteArray(), "ISO-8859-1"); // decoding 
System.out.println(s2); 
+0

это возможно, что вы обращаетесь ответ неправильно, или что терминал не может отображать символы? как вы печатаете ответ? – jtahlborn

+0

@jtahlborn См. Мое редактирование. – Mohit

+0

Я предполагаю, что вы нарушаете ответ, когда пытаетесь его отобразить. знаете ли вы, что ответ кодируется с использованием «iso-8859-1»? – jtahlborn

ответ

0

Вы можете сделать это:

soapMessage.setProperty(SOAPMessage.WRITE_XML_DECLARATION, Boolean.TRUE); 

перед отправкой soapMessage переменных в качестве параметра call().

Обратитесь к этой документации: http://docs.oracle.com/javaee/5/api/javax/xml/soap/SOAPMessage.html#setProperty%28java.lang.String,%20java.lang.Object%29

+0

После добавления выше я получаю исключение Runtime: javax.xml.soap.write-xml-Объявление должно иметь значение false или true – Mohit

Смежные вопросы