1

gsoap を使用して複数の Web サービスにアクセスし、それらすべてを 1 つの実行可能ファイルに結合したいと考えています。私が抱えている問題は、複数の wsdl で wsdl2h を実行し、soapcpp2 を使用してヘッダーをコンパイルしても、プロキシ オブジェクトが 1 つしか生成されないことです。私が使用するコマンドラインパラメータは次のとおりです。

wsdl2h -o header.h -ttypemap.dat -s http://services.web.com/WebService/Service1.asmx?WSDL http://services.web.com/WebService/Service2.asmx?WSDL
soapcpp2 -pMy  -i -wx -C -Igsoap-2.8/gsoap/import header.h

私が得る問題は、Service2 wsdl で定義されたサービスにアクセスしようとするたびに、例外が発生することです。「System.Web.Services.Protocols.SoapException: サーバーは HTTP ヘッダー SOAPAction の値を認識しませんでした:

Service2 のサービスにアクセスする同じコードは、単一の wsdl のみをコンパイルする (Service2 wsdl のみをコンパイルする) 場合に機能します。

次に、Service1 と Service2 の両方の wsdls をチェックします。それらは同じ「targetNamespace」を持っています。そのため、プロキシは 1 つだけ作成されます。

私の質問は次のとおりです。この問題を解決するにはどうすればよいですか? Service1.wsdl と Service2.wsdl の両方でサービスにアクセスし、それらを 1 つのバイナリに入れる必要があります。

gsoap のマニュアルを読み、wsdl2h と soapcpp2 のコマンド ライン パラメータでいくつかの組み合わせを試しましたが、うまくいきませんでした。

どんな助けでも大歓迎です。

私はgsoap 2.8.11 btwを使用します

4

1 に答える 1