2

Java SOAP サービスを呼び出すときに、WCF に XML 名前空間プレフィックスを使用させる必要があります。

現在、送信する SOAP メッセージは次のようになっています。

<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<getStuff xmlns="http://XXXXXX.com/">
<Id>84</Id>
</getStuff>
</s:Body>

メッセージを正しく解析するには、cxf サービスの名前空間プレフィックスを利用する必要があります。

<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<nsXX:getStuff xmlns:nsXX="http://XXXXXX.com/">
<nsXX:Id>84</nsXX:Id>
</nsXX:getStuff>
</s:Body>
4

1 に答える 1

0

1つの解決策に進む前に、2つのXMLが異なることに注意してください。最初の要素<Id>http://XXXXXX.com/名前空間にあり、2番目の要素は空の名前空間にあります。それは本当にあなたが望むものですか?

その場合、メッセージの書き込み時にWCFが使用するプレフィックスを変更できるようにするには、カスタムエンコーダーを使用する必要があります。簡単な実装の1つは、既存のエンコーダーをラップし、ほとんどの呼び出しを元のエンコーダーに委任することです。送信メッセージを書き込むときは、最初に元のエンコーダーに委任し、ローカルバッファーに書き込みます。次に、必要に応じてXMLを変更し、後でそのメッセージを呼び出し元に返すことができます。

http://blogs.msdn.com/b/carlosfigueira/archive/2010/06/13/changing-prefixes-in-xml-responses.aspxの投稿は、このシナリオの1つの実装を示しています。

于 2012-12-20T04:00:21.613 に答える