Web服务失败,因为在SOAPMessage中添加了换行符/间距

时间:2013-01-15 13:49:46

标签: java web-services soap

我正在创建一个SOAPMessage,通过webservice返回给客户端。 在我的本地化测试期间(使用TCPMon),我将此SOAPMessage视为响应,但它在Web服务上失败。

我使用Wireshark进行了一些诊断,发现这个响应xml(SOAPMessage)已损坏,因为它在第1024个字符处添加换行符。我不知道响应是否正确形成并且由于某种原因Wireshark添加换行符或者此响应被真正损坏。我正在使用Tomcat

为了了解代码是如何构造的,它就像 -

在流程的某个时刻,我设置了以下内容(我删除了这两行,但仍然是相同的结果)

//httpservletResponse.setContentType("text/html; charset=UTF-8");
//httpservletResponse.setCharacterEncoding("UTF-8");

稍后在流程中,我执行以下操作

try {
servletOS = httpservletResponse.getOutputStream();
soapMessage.writeTo(servletOS);
servletOS.close();
} finally {
    httpservletResponse.flushBuffer();
}

上面的代码只是为了给出一个基本的理解,请考虑它编译得很好并且所有用户定义的值都已正确设置。 我正在努力甚至缩小确切问题的范围,实际的SOAPMessage由于其编码等?流被冲洗/关闭等?客户端?

我很乐意提供更多信息。

请注意,使用SAAJ的类似过程在相同的环境中工作得非常好。

这就是我建立回应的方式 -

MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart responseSOAPPart = faultMessage.getSOAPPart();
SOAPEnvelope responseEnvelope = responseSOAPPart.getEnvelope();  
soapMessage.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "UTF-8");
soapMessage.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "true");  
responseEnvelope.addNamespaceDeclaration("xsd", "http://........");
responseEnvelope.addNamespaceDeclaration("wsa", "http://......");
// and others  
SOAPHeader soapHeader = responseEnvelope.getHeader();  
// creating various SOAPHeaderElements viz. wsa:To,  wsa:Action, wsa:From etc. 
// and adding these to the SOAPHeader  
// Adding SOAPBody
SOAPBody body = soapMessage.getSOAPBody();
// add body element  
soapMessage.saveChanges()  

0 个答案:

没有答案