gSOAP操作流程
准备工作:
首先,利用C#创建一个ASP.NET Web Service,添加一个或多个方法;如:
[WebMethod] //必须要加上 在每个函数定义的开始
public string HelloWorld()
{
return "Hello World";
}
其次:运行该程序,以IE浏览器为例,如:http://localhost:56885/addWebService/Service.asmx
在其后加上?wsdl,如:http://localhost:56885/addWebService/Service.asmx?wsdl 即可产生wsdl文件;
以上工作准备完成后,就可以开始开发客户端与服务端:
CLIENT:
在开发客户端之前,需准备以下文件:
soapC.cpp、soapH.h、soapServiceSoapProxy.cpp、soapServiceSoapProxy.h、soapStub.h、
stdsoap2.cpp、stdsoap2.h
生成以上文件命令如下:
以上文件时在E:\workStudyDocu\c++SOAP\gsoapbin目下打开cmd窗口输入以下命令生成的
clianet:
wsdl2h -o testClient.h -t typemap.dat –e http://localhost:56885/addWebService/Service.asmx?wsdl
soapcpp2 -i -C -x testClient.h
将生成的文件拷贝到cilent的工程中:如下图
使用方法示例:
SERVER:
在开发服务端时,同样需要准备以下文件:
soapC.cpp、soapH.h、soapServiceSoapService.cpp、soapServiceSoapService.h、soapStub.h、
stdsoap2.cpp、stdsoap2.h
生成以上文件命令如下:
server:
wsdl2h -o testServer.h -t typemap.dat -ehttp://localhost:56885/addWebService/Service.asmx?wsdl
soapcpp2 -i -x -S testServer.h
将生成的文件拷贝到server的工程中:如下图
使用方法示例:
#include<iostream>
#include"ServiceSoap.nsmap"
#include"soapServiceSoapService.h"
usingnamespace std;
intmain()
{
ServiceSoapService server;
server.run(9999);
return 0;
}
NOTE:
应用gSoap编写网络程序,是很方便的,客户端只负责传入要处理的参数,及接收服务器返回值;而所有的处理操作均在服务器中;
例如:webservice中有3个函数,服务器端必须实现这几个函数的定义;
之所以建立ASP.NET WebService,是为了获取wsdl。并且函数的接口也是在ASP.NET Web Service 中定义的,通过wsdl2h命令可以获取相应的wsdl。切记,在ASP.NET Web Service中定义的函数,不管你操作如何,我们只要的是函数的接口,通过wsdl2h命令及soapcpp2命令获取。真正的实现是在server端。
如果要添加函数,需后重新生成wsdl(客户端及服务端),并生成相应的文件,切记,重新添加文件到工程时,应该先保存一份先前已完成函数的代码。