2012-02-14 7 views
2

SOAPメッセージの解析に関連する問題があります。
これはメッセージである:添付ファイル付きの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サーブレットの抽出物である:

messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); 
message = messageFactory.createMessage(mimeHeaders, req.getInputStream()); 

サーブレットをテストするために、私はJMeterのを使用しています。 HTTPリクエストの生のポストボディにSOAPメッセージを入れます。この置くIヘッダーで : コンテンツタイプのマルチパート/関連; Part_3_5438437.1107262647279

境界= ---- = _を

問題番号1:デバッグ私はその境界を見るので、SAAJで解析が盗聴されているようです - = nullのように見えますが、=がトークンとして使用でき、それ以上のものは使用できません。だから、身体とヘッダーの両方から取り除いた。私は受け取った入力を変更することができないので、これは大きな問題ですが、しばらく私ができるとふりましょう。 これで問題番号2に進みます:境界が正しく解析されましたが、この例外が発生しました。com.sun.xml.messaging.saaj.SOAPExceptionImpl:SOAPパートのContent-Typeが不正です:text/plain

[OK]を、私はContent-Typeヘッダにタイプを追加する必要があり、私はそれを解決する方法を知っていると信じて: コンテンツタイプ関連/マルチパート;タイプ= text/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を構築)
は、Java HotSpot(TM)64ビットサーバーVM(20.4-b02-402を構築し、混合モード)問題番号2の嘘に

答えて

2

ソリューションここラインで:

------=_Part_3_5438437.1107262647279 

Content-Type: text/xml 

それは離れて行く必要があり、そうでない場合は、コンテンツタイプは、デフォルトでは、プレーンテキスト/であると想定されます。 Brian Johのおかげでこれを指摘してくれたおかげでhttp://twitter.com/brianwjoh
問題番号1の場合は、境界値を "の間に置くだけで解決しました。同じタイプに適用されます。

type="text/xml";boundary="----=_Part_3_5438437.1107262647279" 
関連する問題