SOAP メッセージの解析に関連する問題があります。
これはメッセージです:
------=_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 を使用しています。SOAP メッセージを HTTP リクエストの未加工の投稿本文に入れました。ヘッダーにこれを入れました: Content-type multipart/related;boundary=----=_Part_3_5438437.1107262647279
問題番号 1: SAAJ での解析にバグがあるようです。デバッグすると、境界が ----null と見なされ、まるで = をトークンとして使用できるかのように見えるためです。そのため、本文とヘッダーの両方から削除しました。受信した入力を変更できないため、これは大きな問題ですが、しばらくの間、変更できるふりをしましょう。わかりました、これで問題番号 2 に進みます: 境界は正しく解析されるようになりましたが、次の例外が発生します: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Bad Content-Type for SOAP Part : text/plain
わかりました、私はそれを解決する方法を知っていると思います.Content-type ヘッダーにタイプを追加する必要があります: Content-type multipart/related;type=text/xml;boundary=----_Part_3_5438437.1107262647279
はい、もちろん、別の厄介な例外があります。
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、混合モード)