プロジェクトの場合、WCF サービスを使用する必要があります (私が作成したものではありません)。
gSoap ツールキットを使用して適切なクラスを作成したところ、すべてうまく機能していました。
それは、サービスの開発者がサービスを更新して WS-Addressing を要求することを決定するまでのことでした!
soapUI ツールを使用してサービスをテストしました。応答を得るには、WS-A の下の「デフォルトの wsa:To を追加」オプションをチェックする必要があります。
私のコードで同様のことをする必要があると思います。wsa プラグインの使用について読みましたが、十分な手順が見つかりませんでした。私がこれまでに行ったことは次のとおりです。
使ったwsdl2h -o outfile.h url_to_service -t typemap.dat
typemap.dat に次のように記述します。
SOAP_ENV__Header =\
#import "wsa.h"\n\
struct SOAP_ENV__Header\n\
{\n\
mustUnderstand _wsa__MessageID wsa__MessageID 0;\n\
mustUnderstand _wsa__RelatesTo * wsa__RelatesTo 0;\n\
mustUnderstand _wsa__From * wsa__From 0;\n\
mustUnderstand _wsa__ReplyTo * wsa__ReplyTo 0;\n\
mustUnderstand _wsa__FaultTo * wsa__FaultTo 0;\n\
mustUnderstand _wsa__To wsa__To 0;\n\
mustUnderstand _wsa__Action wsa__Action 0;\n\
};
soapcpp2 ツールを使用すると、次のようなエラーが表示されます。
wsa5.h(288):エラー: リモート メソッド名の衝突: 構造体/クラス 'SOAP_ENV__Fault' は 274 行目で既に宣言されています
最後に、コードからサービス メソッドを呼び出そうとすると (C++、以前のバージョンから何も変更せず、WS-A は必要ありませんでした)、プログラムがフリーズし、使用メモリがある程度 (~700MB) 増加することがわかります。 、次にドロップすると、プログラムはフリーズしたままになります!
Windows、VS2010、および gSoap 2.8.17 を使用しています。
WSA を追加する方法について、誰かが正しい方向に向けることができますか?
前もって感謝します!