代码改变世界

gsoap使用方法总结

2012-09-20 20:00  Chanx  阅读(1371)  评论(0编辑  收藏  举报

1、  解压gsoap_2.8.10;

2、  在目录\gsoap_2.8.10\gsoap-2.8\gsoap\bin\win32下

3、  打开运行-》cmd-》cd到以上目录下;

4、  wsdl2h -s -o test.h http://localhost:6968/WebServiceTest.asmx?WSDL 在win32 文件夹下 生成test.h

5、  把gsoap->import里面的soap12.h 和stlvector.h复制到win32目录下

6、  执行 soapcpp2.exe -C test.h命令,会生成大堆文件

soapStub.h    // soap的存根文件,定义了ayandy.h里对应的远程调用模型

soapC.c soapH.h  // soap的序列和反序列代码,它已经包含了soapStub.h,服务器端与客户端都要包含它

soapClient.c soapClientLib.c // 客户端代码,soapClientLib.c文件则只是简单地包含soapClient.c和soapC.c

soapServer.c soapServerLib.c // 服务器端代码,soapServerLib.c文件则只是简单地包含soapServer.c和soapC.c

ServiceSoap.nsmap ServiceSoap12.nsmap // 名空间定义,服务器端与客户端都要包含它

soapServiceSoapProxy.h soapServiceSoap12Proxy.h // 客户端的C++简单包装(如果头文件是纯C代码,这两个文件就不会生成)

7、  将上述文件复制到C++工程目录下。并加载近工程中。

8、  在引用cpp文件里面添加

#include "soapH.h"

#include "soapWebServiceTestSoapProxy.h"

#include "WebServiceTestSoap.nsmap"

 

9、调用的实例Demo:

#include <iostream>

#include <cstring>

#include <string>

#include "soapH.h"

#include "soapWebServiceTestSoapProxy.h"

#include "WebServiceTestSoap.nsmap"

 

using namespace std;

int main(int argc,char **argv)

{

WebServiceTestSoap websoap;

_ns1__ReceiveInteractiveSMS rsms;

_ns1__ReceiveInteractiveSMSResponse rRes;

string no="13800138000";

string sno="13800138000";

string scon="text";

rsms.MobileNo=&no;

rsms.ServiceNo=&sno;

rsms.SmsContent=&scon;

 

_ns1__addResponse r;

_ns1__add d;

d.i = 1;

d.j = 2;

websoap.__ns2__add(&d,&r);

int i = websoap.__ns2__ReceiveInteractiveSMS(&rsms,&rRes);

cout<<*rRes.ExceptionMessage<<endl;

cout<<i<<endl;

int y;

cin>>y;

cout<<endl;

}

 在本次的项目开发,需要调用C# web service接口,使用Gsoap很好的解决了这个问题;

注:只是在web service类或方法更改的时候需要重新生成本地的C++ 头文件,内部逻辑改变,但参数及返回值改变则不需要重新生成。