2

.NET 2.0 (もちろん IIS 上) で実装されたサード パーティの Web サービスを使用する必要があります。

Java クライアントを作成する必要があります。SOAP スタブを生成するために wsdl2java を使用しています。

元の Apache Axis プロジェクトは現在保守されていないように見え、サービスからのいくつかの応答を解析する際に問題が発生したため、クライアントを Axis2 の最新 (1.5) バージョンを使用するように変換しました。現在、.NET サービスは私の要求を認識しません。

「チャンク」をオフにすることができました (「スタブ」は wsdl2java によって生成された MumbleStub 型の変数であり、ここではコードの複数行を 1 つの恐ろしい行として示しています)。

stub._getServiceClient().getOptions().setProperty( HTTPConstants.CHUNKED, Boolean.FALSE);

.. したがって、少なくともサービスは私の要求を要求として認識します、悪いものではあります: " HTTP/1.1 400 Bad Request" が現在の応答です (WSDL へのリンクを提供する「イントロ / 概要」ページとは対照的です)。

Axis ("1") リクエストの Content-TYPE ヘッダー (text/xml と application/soap-xml) が異なることに気付きました。実際に問題がある場合、このリクエスト ヘッダーを変更する方法を考えています。

代わりに、他の誰かがこの問題を抱えていますか? 問題は本当に (ここでは表示できません。ブログ エンジンへの "要素注入" のように見えます) ... xml バージョン - "1.0" ... Axis2 がリクエストの先頭に追加した "XML メタ イントロ タグ" ですか?

確かにWS-デススター。

4

1 に答える 1

2

別の content-type ヘッダーについて言及されているように、クライアントは SOAP 1.2 リクエストを送信しようとし、サードパーティ アプリは SOAP 1.1 しか理解できないと思います

AFAIK AXIS2はデフォルトでSOAP 1.2を使用するため、使用するsoapのバージョンを変更してみてください

stub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
于 2009-06-24T21:52:26.843 に答える