我有一个调用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);
答案 0 :(得分:0)
你可以这样做:
soapMessage.setProperty(SOAPMessage.WRITE_XML_DECLARATION, Boolean.TRUE);
将soapMessage
变量作为参数发送到call()
。