• 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.8gsoapinwin32下的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生成代理函数

      

        生成的前提:把gsoapimport目录下的文件拷贝一份放在soapcpp2.exe的同一个目录,否则生成不成功

        

      5、生成后会多出很多文件(纯C代码文件)

       

    第三步,就是在vc中建个工程,设置如下:

       1、新建一个C++项目

      2、在gsoap目录下拷贝stdsoap2.c、stdsoap2.h到新建的C++项目文件下,再把gsoapinwin32目录生成好的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就是接口方法的传入参数

  • 相关阅读:
    从安装、管理到防御_阿里云安骑士全向测评
    云架构师前(钱)景这么好_我们该如何转型?这有两位阿里云云架构总监多年心得
    Infrastructure_as_Code——Kubernetes一键编排实践
    大中华地区(含港澳台)空气质量接口参加阿里云API_as_a_Service_大赛
    E-MapReduce集群启停HDFS/YARN服务
    云服务器ECS还原安全组规则功能介绍_安全组规则的备份与还原
    E-MapReduce集群中HDFS服务集成Kerberos
    FastReport中如何加入自定义函数
    查找算法总结
    八大排序算法总结
  • 原文地址:https://www.cnblogs.com/LiGengMing/p/5594314.html
Copyright © 2020-2023  润新知