我有一個解析SOAP消息的問題。
這是消息:帶附件的肥皂SAAJ
------=_Part_3_5438437.1107262647279
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<content>
[...]
</content>
</soap-env:Body>
</soap-env:Envelope>
------=_Part_3_5438437.1107262647279
Content-Type: text/plain; charset=ISO-8859-1
text
------=_Part_3_5438437.1107262647279--
這是我的Java servlet的提取物,應當接收並解析消息:
messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
message = messageFactory.createMessage(mimeHeaders, req.getInputStream());
要測試的servlet,我使用JMeter的。我把SOAP消息放在HTTP請求的原始郵件正文中。 在我把這個頭: 內容類型多部分/相關;邊界= ---- = _ Part_3_5438437.1107262647279
問題號1:似乎在SAAJ解析被竊聽,因爲調試我看到邊界被視爲---- null,就像if =可以用作令牌一樣。所以我把它從身體和頭部都拿走了。這是一個巨大的問題,因爲我無法改變我收到的輸入,但讓我們暫時假裝我可以。 好吧,這讓我轉移到問題2:現在邊界被正確解析,但我獲得此異常:com.sun.xml.messaging.saaj.SOAPExceptionImpl:錯誤的內容類型的SOAP部分:文本/純
好吧,我相信我知道如何解決這個問題,我要補充的Content-type頭類型: 內容類型多部分/相關;類型=文本/ XML;邊界= ----_ Part_3_5438437.1107262647279
是的,但我當然還有一個討厭的例外:com.sun.xml.messaging.saaj.SOAPExceptionImpl:無法在com.sun.xml.messaging.saaj.soap.MessageImpl.parseContentTy內化消息 pe(MessageImpl.java:337)
我正在使用saaj-impl-1.3.18和saaj-api-1.3.3。
Java版本 「1.6.0_29」
的Java(TM)SE運行時環境(建立1.6.0_29-b11-402-11D50b)
的HotSpot的Java(TM)64位服務器VM(生成20.4 b02-402,混合模式)