• C++调用C#WebService


      最近有个工作任务,需要在C++环境下调用WebService。网上找了很多资料,遇到各种问题折腾了两天,好在总算是搞定了。特此记录一下过程。

      1:安装gSOAP

      我是通过gSOAP的方式访问的WebService。那么首先要下载gSOAP,下载地址:http://sourceforge.net/projects/gsoap2/。我下载的版本是2.8的,直接解压在桌面上,路径:C:Usersxsooy-pcDesktopgsoap-2.8。

      2:生成WebService头文件

      运行CMD,进入控制台管理器。进入gSOAP的win32目录下:

      

      在这个路径下建立一个字符转换规则文件wsmap.dat,文件内容为xsd__string = | std::wstring | wchar_t*,那么SOAP/XML中的string将转换成std::wstrin或wchar_t*,这样能更好地支持中文。

      我的WebService地址是:http://t.os.gs.cn/api/cn_2017.asmx。

           生成头文件: 

      

      -o 文件名,指定输出头文件 
      -n 名空间前缀 代替默认的ns 
      -c 产生纯C代码,否则是C++代码 
      -s 不要使用STL代码 
      -t 文件名,指定type map文件,默认为typemap.dat 
      -e 禁止为enum成员加上名空间前缀

       执行命令后,当前目录下多了一个WebService.h的头文件:

      

      3:根据WebService头文件生成其他文件

      

      

      -C 仅生成客户端代码 
      -S 仅生成服务器端代码 
      -L 不要产生soapClientLib.c和soapServerLib.c文件 
      -c 产生纯C代码,否则是C++代码(与头文件有关) 
      -I 指定import路径(见上文) 
      -x 不要产生XML示例文件 
      -i 生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)

      执行完之后,目录下的文件结构如下:

      

      4:新建C++控制台程序,并添加引用文件

      

      把生成文件加到项目里面来,上级目录中的这两个文件也加进来:

      

      注意引用进来的cpp文件取消预编译,否则会出错。

      

      5:最后附上源代码

      http://download.csdn.net/detail/springxie9851/9888626

      

     

      

  • 相关阅读:
    db2中的常用命令及使用方法
    互联网服务应用协议设计
    Zookeeper整理(一)- 写操作产生事件,写操作与Watcher对应关系
    实现自己的连接池(一)
    SMP、NUMA、MPP体系结构介绍
    随手备忘 ubuntu12.04 lts 安装gcc 4.8
    认真体会 结构体中的零长度数组
    由内存池实现总结内存对齐问题
    认真理解 oom killer 备忘
    仔细体会 epoll中的et lt模式
  • 原文地址:https://www.cnblogs.com/springxie/p/7117627.html
Copyright © 2020-2023  润新知