1. 下载gsoap.
2. 下载的gsoap包含soapcpp2.exe 和 wsdl2h.exe 文件
3. 服务器端可以通过WSDL或者简单文件的方式来定义接口, 这里采用简单文件来定义一个简单的加法和减法操作
int ns__Add(int a, int b, int &c);
int ns__Sub(int a, int b, int &c);
注意返回值必须是int, 参数类型是简单的内置类型或者自定义的接口体, 也可以使用vector, 但是需要额外的import头文件。
函数的最后一个参数是表示函数真正的返回值, 如果不希望函数有返回值, 可以用void(*)有不有指针不记得了, 可以网上查
4. 头文件定义好了后, 这里假定为calculator.h, 运行soapcpp2.exe -i calculator.h, 将会在当前目录下产生一堆文件。
这些文件有的是给服务器用的, 有的是给客户端用的。
5. 不管是服务器还是客户端都需要从gsoap的目录下的stdsoap2.cpp 和 stdsoap2.h, 已将刚刚产生的soapC.cpp
6. 服务器端还需要soapService.cpp, 另外需要从Service类继承一个子类 去实现Add和Sub方法, 也需要包含
#include "ns.nsmap"
#include "soapService.h"
这里假定一个类
class CCalculator : public Service
{
public:
{
c = a + b;
return SOAP_OK;
}
int Sub(int a, int b, int &c)
{
c = a - b;
return SOAP_OK;
}
};
运行的代码是
CCalculator soap;
soap.run(1000);
7. 客户端引入soapProxy.cpp
#include "ns.nsmap"
#include "soapProxy.h"
void main()
{
Proxy p("http://localhost:1000");
int c;
p.Add(1, 2, c);
p.Sub(1, 2, c);
}