码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++利用gsoap库调用WebService

时间:2016-06-17 23:59:40      阅读:808      评论:0      收藏:0      [点我收藏+]

标签:

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就是借口方法的传入参数

 

C/C++利用gsoap库调用WebService

标签:

原文地址:http://www.cnblogs.com/LiGengMing/p/5594314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!