我知道如何为gsoap普通代码实现http get,但是当我使用gsoap和soapcpp2 -i
生成代码时,我没有soap_serve函数可用,我不知道如何/在何处重新实现fget / http_get回调
有没有人试过这个?
答案 0 :(得分:1)
很难理解,你尝试做什么。我会给一些小的“cookbook”示例(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方法:commandsuccess
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