最近有个工作任务,需要在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