C/C++利用gsoap库调用WebService
C/C++调用WebService需要用到soap库,一般使用的有gsoap和axis cpp两种实现,这里使用gsoap来调用。gsoap可以在 linxu、windows、mac多种平台上使用。
gsoap的主页地址是http://gsoap2.sourceforge.net/
新建一个WebService:
1 //写一个简单的方法 2 [WebMethod(Description="返回字符串")] 3 public string HelloWorld(string str) 4 { 5 return "The Value Is " + str; 6 }
gsoap使用步骤:
1、解压gsoap 在Windows下使用解压下的\gsoap-2.8\gsoap\bin\win32下的wsdl2h.exe和soapcpp2.exe工具。
2、用wsdl2h根据webservice生成.h文件,wsdl2h [opt] 头文件名 WSDL文件名或URL
wsdl2h常用选项:
-o 文件名,指定输出头文件
-n 名空间前缀 代替默认的ns
-c 产生纯C代码,否则是C++代码
-s 不要使用STL代码
-t 文件名,指定type map文件,默认为typemap.dat
-e 禁止为enum成员加上名空间前缀 type map文件用于指定
3、利用wsdl2h.exe生成.h文件
生成成功后会多出一个UserInfo.h文件
4、利用soapcpp2.exe生成代理函数
生成的前提:把gsoap\import目录下的文件拷贝一份放在soapcpp2.exe的同一个目录,否则生成不成功
5、生成后会多出很多文件(纯C代码文件)
第三步,就是在vc中建个工程,设置如下:
1、新建一个C++项目
2、在gsoap目录下拷贝stdsoap2.c、stdsoap2.h到新建的C++项目文件下,再把gsoap\bin\win32目录生成好的soapC.c、soapClient.c、soapH.h、soapStub.h、targetver.h、UserInfoSoap.nsmap拷贝到新建的C++项目文件下
3、新建好C++工程后,添加所有拷贝到新建的C++项目文件下的所有文件
4、新建一个主入口的c文件,尅把自动生成的cpp main文件删除,然后写入代码
1 #include<stdio.h> 2 #include"UserInfoSoap.nsmap" 3 #include"soapStub.h" 4 int main() 5 { 6 int iRet; 7 struct soap userinfoSoap; 8 struct _ns1__HelloWorld helloWorld; 9 struct _ns1__HelloWorldResponse helloWorldResponse; 10 const char *pcAddr="http://localhost:31749/UserInfo.asmx?WSDL"; 11 helloWorld.str= "LiGengMing"; 12 soap_init(&userinfoSoap); 13 iRet=soap_call___ns1__HelloWorld(&userinfoSoap,pcAddr,NULL,&helloWorld,&helloWorldResponse); 14 if(iRet!=0) 15 { 16 printf("读取数据失败"); 17 } 18 else 19 { 20 printf("读取数据成功:%s",helloWorldResponse); 21 } 22 soap_destroy(&userinfoSoap); 23 soap_end(&userinfoSoap); 24 soap_done(&userinfoSoap); 25 getchar(); 26 return 0; 27 }
5、注意点:helloWorld.str就是接口方法的传入参数
posted on 2016-06-17 23:32 LiGengMing 阅读(11138) 评论(0) 编辑 收藏 举报
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 分享4款.NET开源、免费、实用的商城系统