http get for gsoapの通常のコードを実装する方法は知っていますが、gsoapとを使用してコードを生成するとsoapcpp2 -i
、soap_serve関数が使用できず、fget/http_getコールバックを再実装する方法/場所がわかりません。
誰かがこれを試しましたか?
あなたが何をしようとしているのか、理解するのは難しいです。少し前に書いた小さな「クックブック」の例(C++バージョンですが、Cは同じように見えます)を示します
a)正しいサービスインターフェースを書く
$ cat service.h
//gsoap ns service name: mon Simple monitor service
//gsoap ns service encoding: literal
//gsoap ns service namespace: http://feniksa.dnsalias.com/hlanmon.wsdl
//gsoap ns service location: http://feniksa.dnsalias.com:8888
//gsoap ns schema namespace: urn:mon
#import "stlvector.h"
int ns__commandsuccess(std::string secret, int commandid, bool& status);
簡単な SOAP メソッドを 1 つだけ作成しました。
b) soapcpp を介してサービス クラスを生成する
soapcpp2 -S -i -2 -I /usr/share/gsoap/import service.h
soapcpp2 の出力を参照してください
gsoap は大量のファイルを生成します。ファイルを参照してください: monService.h および monService.cpp (mon はサービスの名前)、soapH.h も参照
c) サービス関数を実装する私の例では、monService.cpp 関数に追加します。
int monService::commandsuccess(std::string secret, int commandid, bool &status)
{
// some logic here
return SOAP_OK;
}
d) 関数の検索または実行。私のサービスのために、私はそのようなコードをmain.cppに書きました
#include "monService.h"
// other includes here
int main(int argc, char* argv[])
{
// init code
monService service;
// other code here
service.serve(); // <- haha, i am here
// other code
}
これを参照してください: https://freeman.svn.sourceforge.net/svnroot/freeman/other/trunk/gsoap