0

http get for gsoapの通常のコードを実装する方法は知っていますが、gsoapとを使用してコードを生成するとsoapcpp2 -i、soap_serve関数が使用できず、fget/http_getコールバックを再実装する方法/場所がわかりません。

誰かがこれを試しましたか?

4

1 に答える 1

1

あなたが何をしようとしているのか、理解するのは難しいです。少し前に書いた小さな「クックブック」の例(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

于 2012-09-19T17:47:48.123 に答える