2

何人かの人がこの質問をしているのに気づきましたが、満足のいく答えを見つけることができませんでした。gSOAPを使用して、wsdlドキュメントからc++スタブを作成しています。問題は、soapメッセージを送信するときにgSOAPが名前空間の前にsoapメソッド名を付けることです。たとえば、送信<ns2:Inform></ns2:Inform>する必要があるときに送信します<Inform></Inform>

誰かがこの問題を解決する方法を知っていますか?

編集:

私はc ++プロキシバージョンを使用しているため、以下で選択した回答は最初は機能しませんでしたが、次のコードを使用してサービスオブジェクトを作成するだけでした。

exampleSOAPProxy service=exampleSOAPProxy(SOAP_XML_DEFAULTNS,SOAP_XML_DEFAULTNS);SOAP_XML_DEFAULTNSは、要素から名前空間プレフィックスを削除し、各要素に名前空間を明示的に追加するだけで、実際にはすべてにデフォルトの名前空間を使用しないため、紛らわしい名前です。

アプリケーションをコンパイルするときに、コンパイル/リンクステートメントに-DWITH_SOAPDEFS_Hを追加する必要がありました。-DWITH_SOAPDEFS_Hフラグを設定するとインポートされるため、/ usr / local /include/にsoapdefs.hというファイルを作成する必要があることに注意してください。stdsoap2.hにインクルードと宣言を追加するために使用する単なるヘッダーファイル

4

1 に答える 1

3

どのバージョンのgSOAPを使用していますか?2.8.1以上の場合は、次の方法を試してみてください。

soap_omode(&soap、SOAP_XML_DEFAULTNS);

http://cateof.wordpress.com/2010/09/21/default-namespace-gsoap-with/で見つけました

于 2011-03-17T14:53:45.313 に答える