Java SOAP响应编码问题

Java SOAP响应编码问题,java,soap,character-encoding,soapui,Java,Soap,Character Encoding,Soapui,我有一个soap客户机,它调用soap WS方法。问题是,当我使用下面的代码接收JAVA中的数据时,JAVA使用一些默认编码解析SOAPMessage。因此,当我打印WS-response时,我会看到一些垃圾字符 SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection connection = connectionFactory.createConnection()

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

SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = connectionFactory.createConnection();
SOAPMessage response = connection.call(soapMessage, endpoint);
那么,有没有什么方法可以指定或强制上面的.call()方法使用特定的字符编码呢

我已经使用soapui测试了WS,soapui的原始XML选项卡显示了有效字符

SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = connectionFactory.createConnection();
SOAPMessage response = connection.call(soapMessage, endpoint);
编辑:Am使用以下代码打印并验证是否存在垃圾字符:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
response.writeTo(baos);
String s2 = new String(baos.toByteArray(), "ISO-8859-1"); // decoding 
System.out.println(s2);
您可以这样做:

soapMessage.setProperty(SOAPMessage.WRITE_XML_DECLARATION, Boolean.TRUE);
在将
soapMessage
变量作为参数发送到
call()
之前

请参阅本文档:

是否可能是您处理响应不正确,或者您的终端无法显示字符?您如何打印响应?@jtahlborn请查看我的编辑。我猜您在试图显示响应时破坏了响应。您知道响应是使用“iso-8859-1”编码的吗?WS-provider就是这么说的,但是为什么SOAP UI中的原始xml选项卡,如果我在java中看到垃圾字符,请显示正确的字符。我不理解您最后的评论。添加上述内容后,我得到运行时异常:javax.xml.soap.write-xml-declaration的值必须为false或true