周りを見回して、提案されたさまざまな解決策を試した後、これを書いています。MTOM/非 MTOM SOAP メッセージからバイナリ データを抽出するために推奨される最も一般的な 2 つのソリューションは次のとおりです。
- OMText ノードを取得し、その中にある dataHandler インスタンスを使用します
- 「href」属性を含む OMElement ノードを見つけます。「cid:xxxxx」値を取得し、「xxxxx」部分を使用して、メッセージ コンテキスト インスタンスに存在する添付ファイル マップから添付ファイルを取得します。
私が直面している問題は、クライアントが SOAP 応答メッセージが MTOM であることを示していることです [これは、メッセージ コンテキスト インスタンスの isDoingMTOM() メソッドを使用して判断しました]。ただし、「href」属性を含む OMElement ノードはありません。SOAP エンベロープを印刷すると、バイナリ データが本文内にインラインで存在することがわかりました。そこで、データを取得するために OMText ノード アプローチを試みましたが、OMElement を対応する OMText ノードにキャストしようとすると、常に classCastException が発生します。
誰かが私が見逃していることを指摘できますか?