gsoap使用
程序员文章站
2022-07-14 17:06:06
...
之前使用gsoap开发了一个webservice,提供restful接口和函数调用功能。现在整理下,记录下。
1、copy gsoap文件到新建目录
soapcpp2.exe stdsoap2.cpp stdsoap2.h
2、new add.h
//gsoap ns service name: add
//gsoap ns service style: rpc
int ns__add(int num1, int num2, int* result );
3、cd 到add.h目录下 使用 soapcpp2.exe -S add.h
-S 是只生产服务端代码
4、copy 生成的文件到工程目录下,将下面文件添加到工程
soapH.h soapStub.h stdsoap2.h
soapC.cpp soapServer.cpp stdsoap2.cpp add.nsmap
5、使用的时候添加头文件
#include "soapH.h"
#include "add.nsmap"
6、响应
plugin目录下一下文件copy到工程目录下即可,如果放到单独目录plugin makefile中添加VPATH =./plugin
httpget.h
httppost.h
httpform.h
httpget.c
httppost.c
httpform.c
代码中添加处理
int myhttp_get(struct soap *soap);
//curl -X GET IP:port/path curl IP:port/path
int myhttp_put(struct soap *soap);
//curl -X PUT IP:port/path
int myhttp_post(struct soap *soap);
//curl -d '{"id":1,"info":"hello"}' IP:port/path
struct soap a_soap;
soap_init(&a_soap); //初始化运行时环境
a_soap.fget=myhttp_get;
a_soap.fput=myhttp_put;
if (soap_register_plugin_arg(&a_soap, http_form, (void*)myhttp_post))
{
soap_print_fault(&a_soap, stderr);
}
7、post data 获取
char* pdata=getpostpara(a_soap->buf);
char* getpostpara(char* p)
{
if (!strncmp(p, "POST",strlen("POST")))
{
for(;*p;p++)
{
if (!strncmp(p, "\r\n\r\n",strlen("\r\n\r\n")))
break;
}
p+=strlen("\r\n\r\n");
}
return p;
}
路径获取 a_soap->path
附加三个功能:
8、json解析
文件夹里面保留头文件和源文件。
jsoncpp-master
include/json/.h头文件
src/lib_json/.cpp源文件
makefile中添加:
VPATH=./jsoncpp-master/include:./jsoncp-maser/src/lib_json
#include "json/json.h"
json_reader.cpp
json_value.cpp
json_writer.cpp
9、base64
base64加密解密
10、log日志
多线程日志
上一篇: gsoap开发web service客户端发送短信乱码
下一篇: android之handler使用