C++调用C#WebService

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

  1:安装gSOAP

  我是通过gSOAP的方式访问的WebService。那么首先要下载gSOAP,下载地址:http://sourceforge.net/projects/gsoap2/。我下载的版本是2.8的,直接解压在桌面上,路径:C:\Users\xsooy-pc\Desktop\gsoap-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

 

 

  

 

 

 

 

 

 

  

posted @ 2017-07-04 17:22  SpringX  阅读(1818)  评论(0编辑  收藏  举报