2015-03-02 3 views
1

Я извлекаю вложения из сообщения SOAP и использую их в своем приложении.
Я не удаляю вложения из исходного сообщения. После того, что я пытаюсь преобразовать исходные SOAPMessage, содержащие вложения (SWA) в строку, используя следующий код:SoapMessage.writeTo throws No Content exception для SOAPMessage with Attachments

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) 

ли кто-нибудь имеет представление об этом ?

_Thanks, BHUSHAN

ответ

0

Возможно, попробуйте использовать StringBuilder вместо строки? Использование 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(); 
+0

'message.writeTo (baos);' // эта строка выходит из строя изнутри –

+0

Во втором сообщении говорится: «Нет содержимого». Можете ли вы добавить точку останова где-нибудь, прежде чем пытаться написать и проверить объект, чтобы убедиться, что на самом деле есть данные в объекте сообщения? – roflplanes

+0

Да, данные присутствуют, однако, это как-то связано с обработчиками! –

Смежные вопросы