java - SoapMessage.writeTo 对带有附件的 SOAPMessage 抛出无内容异常

标签 java soap saaj

我正在从 SOAP 消息中获取附件并在我的应用程序中使用它们。
我不会从原始消息中删除附件。 之后,我尝试使用以下代码将原始 包含附件 (SwA) 的 SOAPMessage 转换为字符串:

ByteArrayOutputStream stream = new ByteArrayOutputStream();
soapMsg.writeTo(stream);
String message = new String(stream.toByteArray(), "utf-8");

它抛出以下异常:

com.sun.xml.internal.messaging.saaj.soap.MessageImpl writeTo
SEVERE: SAAJ0540: Error during saving a multipart message
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Error during saving a multipart message
    at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java:1233)
    at main.SOAPMTOMUtilityTest.main(SOAPMTOMUtilityTest.java:161)
Caused by: com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException: no content
    at com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart.writeTo(MimeBodyPart.java:905)
    at com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart.writeTo(MimeMultipart.java:266)
    at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java:1224)
    ... 1 more

CAUSE:

com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException: no content
    at com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart.writeTo(MimeBodyPart.java:905)
    at com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart.writeTo(MimeMultipart.java:266)
    at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java:1224)
    at main.SOAPMTOMUtilityTest.main(SOAPMTOMUtilityTest.java:161)

有人知道这个吗?

_谢谢, 不山

最佳答案

也许尝试使用 StringBuilder 而不是 String?如下所示使用 StringBuilder.append() 对我来说很有效,而我根本无法让新实例化的(如您使用的)String() 工作。

        // This stringbuilder will hold the initial message we sent to SOA
        StringBuilder soapMsg = new StringBuilder();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        SOAPMessage message = getSoapMessageFromString(foo);

        // Write the initial message to the byte array output string
        message.writeTo(baos);

        // append the baos data (initial message) to the stringbuilder for
        // processing
        soapMsg.append(baos.toString());

        // Reset the baos for use on the response message
        baos.reset();

关于java - SoapMessage.writeTo 对带有附件的 SOAPMessage 抛出无内容异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28806028/

相关文章:

java - 如何在java中验证时间戳?

java - 与查询不服务相关的最佳和最全面的 SOAP 库是什么

javascript - 如何在Postman工具的预请求脚本中提供soap xml主体

java - 将 SOAP 字符串消息转换为 SoapMessage 时出现 NullPointer 异常

java - 从 Java7 上的 Spring-WS 客户端向 Java 6 上的服务器发送 SOAP 消息时删除了左尖括号

java - 在有效的 SOAP SAAJ 信封中使用默认命名空间

java - 在 IntelliJ IDEA 15.0.3 中运行 Hibernate 项目时出错

java - 如何创建有条件打开的导航 View ?

java - 运行 spring mvc 项目时出现一些错误

java - 将 SOAP 响应反序列化到生成的类 C#