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

时间: 2024-10-10 15:53:20

C/C++利用gsoap库调用WebService的相关文章

利用JavaScriptSOAPClient直接调用webService --完整的前后台配置与调用示例

JavaScriptSoapClient下载地址:https://archive.codeplex.com/?p=javascriptsoapclient JavaScriptSoapClient的Demo实例:  http://www.guru4.net/articoli/javascript-soap-client/demo/en.aspx 利用JavaScript SOAP Client直接调用webService --完整的前后台配置与调用示例 2013年01月04日 17:15:32

vc6控制台程序利用SoapToolkit3.0调用WebService

1. 首先要安装SoapToolkit3.0安装包并安装(我的安装目录为:D:\Program Files\MSSOAP\) 2. 新建vc控制台程序(空项目),项目名称:WinConsole6InvokeWebService,添加一个c++源文件(main.cpp),将SOAP安装目录下的lib文件D:\Program Files\MSSOAP\Lib\mssoap30.lib复制到项目文件夹下. 3.添加源代码: #include <stdio.h> #include <iostre

svc6 控制台程序利用SoapToolkit3.0调用WebService

1. 首先要安装SoapToolkit3.0安装包并安装(我的安装目录为:C:\Program Files\Common Files) 2. 新建vc控制台程序(空项目),项目名称:WinConsole6InvokeWebService,添加一个c++源文件(main.cpp) 3.main.cpp源代码 #include <stdio.h> #include <iostream> #include <vector>   #import "msxml4.dll

Qt+gsoap调用WebService

1.       前言 Qt本身给我们提供了调用WebService的解决方案qsoap,看了一下他的介绍,感觉实在是太弱了,而且又是个新出的东西,所以还是决定不用他.既然使用Qt,那当然是跨平台的解决方案才合适,显示MS的SoapToolKit也不在选择的范围.于是改用老牌的gsoap. 2.       环境 Qt版本: Qt4.6(其他版本也适合) GSOAP版本: gsoap2.7.12(其他版本也适用) 服务端开发环境: VS2008.C#..net2.0以上 3.       准备

利用ksoap调用webservice

博文参考: http://www.cnblogs.com/shenliang123/archive/2012/07/05/2578586.html http://blog.csdn.net/jimbo_lee/article/details/23612333 http://www.cnblogs.com/zhangchaoyang/articles/1955834.html 注意: 1.需要加网络权限 2.跟一般的联网操作一样需要在子线程中. 3.两个主要参数: webservice的命名空间和

WebService应用之客户端 Ksoap 库调用

KSOAP2 是第三方开发的专门用于在移动设备调用WebService的类库.使用 KSOAP2 调用 WebService 可分为6步来完成,其中主要使用了 SoapObject 对象来指定了要调用的方法,然后通过 HttpTransportSE 对象的call方法来调用WebService的方法,最后通过 getResponse 方法返回结果.读者可以通过本文提 供的完整示例来体会使用KSOAP2调用WebService的完整过程.在最后还介绍了如何通过异步调用 WebService 的方式

Android使用ksoap2-android调用WebService学习

转自 Android使用ksoap2-android调用WebService学习 之前主要做客户端UI交互,很少处理数据和接触服务端,但现在的移动设备根本不可能离得开网络连接,数据的交换.最近学习的是在android端如何去调用远程WebService,都说WebService是一种基于SOAP协议的远程调用标准,对于这个协议理解不深,知道webservice可以将不同操作系统平台.不同语言.不同技术整合到一块,android SDK没有直接调用webservice的库,最常用的是借助ksoap

iOS 开发学习之路(登陆验证调用WebService)二

swift3.0下使用Alamofire调用Webservice遇到的一些问题以及解决方案. 首先是针对没有证书的https下的接口处理问题(ps:不推荐在正式版本中使用),manager.request替换掉了Alamofire.request. let manager = Alamofire.SessionManager.default manager.delegate.sessionDidReceiveChallenge = { session, challenge in var disp

PB11.5创建及调用WebService

我今天做了这个“PB创建及调用WebService”的小作业,下面我来分享一下我的整个实践过程以及我遇到的问题,希望对大家有所帮助,这个小作业是分以下三部来完成的: 一.构建WebService ①创建Workspace,Workspace命名为:Your_WebService ②建立.NET Web Service Target,这一步只需要一路Next即可 最后生产的项目文件中至少包含三项,一个webservice2应用,一个p_webservice2部署,一个n_webservice2用户