免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 12584 | 回复: 4
打印 上一主题 下一主题

[C++] C++调用WebService [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-26 15:28 |只看该作者 |倒序浏览
    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);  
    }  

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2012-11-26 15:34 |只看该作者
还插播广告

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2012-11-26 23:20 |只看该作者
我们学校一个啥也不会的毕业生都直接去达内当老师了, 还出来宣传, 笑.

论坛徽章:
208
巨蟹座
日期:2013-09-02 09:16:36卯兔
日期:2013-09-02 20:53:59酉鸡
日期:2013-09-05 21:21:45戌狗
日期:2013-10-15 20:51:17寅虎
日期:2013-10-18 21:13:16白羊座
日期:2013-10-23 21:15:19午马
日期:2013-10-25 21:22:48技术图书徽章
日期:2013-11-01 09:11:32双鱼座
日期:2013-11-01 20:29:44丑牛
日期:2013-11-01 20:40:00卯兔
日期:2013-11-11 09:21:32酉鸡
日期:2013-12-04 19:56:39
4 [报告]
发表于 2012-11-27 09:11 |只看该作者
linux_c_py_php 发表于 2012-11-26 23:20
我们学校一个啥也不会的毕业生都直接去达内当老师了, 还出来宣传, 笑.

当年我校也是啥都不会的留校了(没人要),二十年过去了,居然一个个人模狗样,一个个掏出名片“博士教授”的
我现在开始有点明白,主席台上坐的啥人了

论坛徽章:
0
5 [报告]
发表于 2012-11-27 11:18 |只看该作者
晕 搞这么复杂干嘛 自己com调用一下就行了 装什么
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP