C++调用WebService
来源:互联网 发布:淘宝男装好的店铺 编辑:程序博客网 时间:2024/06/07 03:45
1. gSOAP是一个开源的项目,用它可以方便的使用c/c++地进行SOAP客户端和服务器端编程,而不必了解xml和SOAP协议的细节
wsdl2h.exe: 编译wsdl文件生成c/c++头文件
-o 文件名,指定输出头文件
-n 名空间前缀 代替默认的ns
-c 产生纯C代码,否则是C++代码
-s 不要使用STL代码 达内就业
-t 文件名,指定type map文件,默认为typemap.dat
-e 禁止为enum成员加上名空间前缀
soapcpp2.exe: gSOAP编译器,编译头文件生成服务器和客户端都需要的c/c++文件(默认使用STL,需要stlvector.h)
-C 仅生成客户端代码
-S 仅生成服务器端代码
-L 不要产生soapClientLib.c和soapServerLib.c文件
-c 产生纯C代码,否则是C++代码(与头文件有关)
-I 指定import路径(见上文)
-x 不要产生XML示例文件
-i 生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)
2. 生成存客户端存根程序和框架
wsdl2h -o xxx.h xxx.wsdl(-t D:/gsoap-2.7/gsoap/typemap.dat)
soapcpp2 -L -x -i xxx.h(-I D:/gsoap-2.7/gsoap/import)
3. 或直接自己编写xxx.h,并生成xxx.wsdl
//gsoap ns service name: xxx
//gsoap ns service style: rpc
//gsoap ns service encoding: literal
//gsoap ns service location: http://localhost:8080
//gsoap ns schema namespace: http://localhost:8080/xxx.wsdl
int ns__add(int a, int b, int* result);
3. 客户端
1) 把如下生成的文件添加到项目:
stdsoap2.h,stdsoap2.cpp,
soapH.h,soapC.cpp,soapStub.h,
soapxxxProxy.h,soapxxxProxy.cpp,xxxSoap.nsmap
wsock32.lib
2) 代理方式调用
#include "soapTestWebServiceProxy.h"
#include "TestWebService.nsmap"
int main(int argc, char* argv[])
{
int result = 0;
TestWebServiceProxy proxy;
proxy.add(12, 23, &result);
} //www.sctarena.com
4. 服务端
1) 把如下生成的文件添加到项目:
stdsoap2.h,stdsoap2.cpp,
soapH.h,soapC.cpp,soapStub.h,
soapxxxService.h,soapxxxService.cpp,xxxSoap.nsmap
wsock32.lib
2) 实现接口函数
int TestWebServiceService::add(int a, int b, int *result)
{
*result = a+b;
return SOAP_OK;
} //www.m6wang.com
3) 开启服务
#include "soapTestWebServiceService.h"
#include "TestWebService.nsmap"
int main(int argc, char* argv[])
{
TestWebServiceService service;
service.run(8080);
}
wsdl2h.exe: 编译wsdl文件生成c/c++头文件
-o 文件名,指定输出头文件
-n 名空间前缀 代替默认的ns
-c 产生纯C代码,否则是C++代码
-s 不要使用STL代码 达内就业
-t 文件名,指定type map文件,默认为typemap.dat
-e 禁止为enum成员加上名空间前缀
soapcpp2.exe: gSOAP编译器,编译头文件生成服务器和客户端都需要的c/c++文件(默认使用STL,需要stlvector.h)
-C 仅生成客户端代码
-S 仅生成服务器端代码
-L 不要产生soapClientLib.c和soapServerLib.c文件
-c 产生纯C代码,否则是C++代码(与头文件有关)
-I 指定import路径(见上文)
-x 不要产生XML示例文件
-i 生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)
2. 生成存客户端存根程序和框架
wsdl2h -o xxx.h xxx.wsdl(-t D:/gsoap-2.7/gsoap/typemap.dat)
soapcpp2 -L -x -i xxx.h(-I D:/gsoap-2.7/gsoap/import)
3. 或直接自己编写xxx.h,并生成xxx.wsdl
//gsoap ns service name: xxx
//gsoap ns service style: rpc
//gsoap ns service encoding: literal
//gsoap ns service location: http://localhost:8080
//gsoap ns schema namespace: http://localhost:8080/xxx.wsdl
int ns__add(int a, int b, int* result);
3. 客户端
1) 把如下生成的文件添加到项目:
stdsoap2.h,stdsoap2.cpp,
soapH.h,soapC.cpp,soapStub.h,
soapxxxProxy.h,soapxxxProxy.cpp,xxxSoap.nsmap
wsock32.lib
2) 代理方式调用
#include "soapTestWebServiceProxy.h"
#include "TestWebService.nsmap"
int main(int argc, char* argv[])
{
int result = 0;
TestWebServiceProxy proxy;
proxy.add(12, 23, &result);
} //www.sctarena.com
4. 服务端
1) 把如下生成的文件添加到项目:
stdsoap2.h,stdsoap2.cpp,
soapH.h,soapC.cpp,soapStub.h,
soapxxxService.h,soapxxxService.cpp,xxxSoap.nsmap
wsock32.lib
2) 实现接口函数
int TestWebServiceService::add(int a, int b, int *result)
{
*result = a+b;
return SOAP_OK;
} //www.m6wang.com
3) 开启服务
#include "soapTestWebServiceService.h"
#include "TestWebService.nsmap"
int main(int argc, char* argv[])
{
TestWebServiceService service;
service.run(8080);
}
0 0
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- flex 调用c#webservice
- 动态调用WebService(C#)
- 动态调用WebService(C#)
- Linux信号基础
- 公网 rtsp流媒体地址
- msxml3.dll 错误 80072ee2解决方法 The operation timed out
- 找出字符串中的中文
- linux中将测试用C文件编译成bin供开发人员快速测试用操作方法
- C++调用WebService
- SpringMVC日期转换之JsonSerialize
- Android中组装xml文件内容
- Android开源框架ImageLoader的完美例子
- Eclipse中配置NDK R10环境
- 上/下拉电阻对GPIO的影响
- spring mvc前台时间字符串到后台Date的转换
- 【Flume】【源码分析】flume中FailoverSinkProcessor容错处理机制源码分析
- 现金流 for ipad