SOAP响应编码问题

时间:2016-05-30 23:44:13

标签: java soap character-encoding soapui

我有一个调用SOAP WS方法的soap客户端。问题是,当我使用下面的代码在JAVA中接收数据时,java使用一些默认编码解析SOAPMessage。因此,当我打印WS响应时,我看到一些垃圾字符。

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

那么,有什么方法可以通过它指定或强制使用上面的.call()方法来使用特定的字符编码。

我使用SOAP UI测试了WS,而SOAP UI的RAW XML选项卡显示了有效字符。

编辑:使用以下代码打印并验证是否存在垃圾字符:

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

1 个答案:

答案 0 :(得分: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