2

私は、wsdlから独立したc++のSOAPクライアントを実行するための最良の方法を理解しようとしています。

私が必要としているのは、関数の名前と、それを送受信して石鹸の応答を受信するためのパラメーターのリストだけを知っているようなものです(これはそれほど単純ではないことを知っています)。

私の考えは次のようなことをすることです: libcurl-C または http://www.cplusplus.com/forum/general/16225/を使用してファイルからのSOAP要求とファイルへの読み取り

これを行うための最良の方法を教えてもらえますか、それともgSoapのようなライブラリを使用して、gSoapが生成するクラスのc++メソッドをc++コードで実行するのが最良の方法ですか?

ありがとう

4

2 に答える 2

4

gSOAPはGPLライセンスであることに注意してください。制限の少ない代替手段はAxis2/C++です。

Axis2 / C ++を使用すると、WSDLからスタブを生成し、生成されたクラスを使用してコードでWebサービスを呼び出すことができます。

スタブを生成します(はい、Javaですが、これは1回限りのアクションです)。

java org.apache.axis.wsdl.wsdl2ws.WSDL2Ws Calculator.wsdl -lc++ -sclient

次に、以下を使用します。

#include "Calculator.h" 
#include <stdio.h> 
int main() 
{ 
  Calculator c; 
  int intOut; 
  c.add(20, 40, intOut); 
  printf("result is = %d\n", intOut); 
  return 0; 
}

詳細はこちら

于 2017-01-23T14:00:51.850 に答える
2

あなたが何をしているのかに応じて。どこかで単一のリクエストが必要な場合は、curl(質問でリンクしたような)が適切です。C ++にはCが含まれているため、C ++インターフェイスは必要ありませんが、より良い方法です。

ただし、SOAPで深刻な作業を行う必要がある場合は、gSOAPまたは同様のライブラリを使用することを強くお勧めします。XMLの操作はかなり面倒です。シリアル化/逆シリアル化はそれを処理する最も簡単な方法であり、C ++は静的に型付けされているため、スキーマからシリアル化コードを生成する必要があります。これはgSOAPが行うことです。したがって、gSOAPよりも簡単な方法はないと思います。

WSDLがない場合でも、XMLを手動で処理するよりも、WSDLで必要なメソッドを宣言し、そこから適切なシリアル化コードを生成する方が簡単だと思います。より動的な言語では、実行時にシリアル化/逆シリアル化を生成できますが、C++ではそれができません。

于 2012-12-18T15:51:52.100 に答える