如何在C++中使用WebService

如何在C++中使用WebService,第1张

使用gsoap生成所需的WebService

下载后的gsoap包为:(点击到我的资源中下载)

将他解压后,进入到文件夹:gsoap_2.8.18\gsoap-2.8\gsoap\bin\win32

里面有2个我们要用到的exe,wsdl2h.exe和soapcpp2.exe,如果缺少一个typemap.dat,则从gsoap_2.8.18\gsoap-2.8\gsoap下拷贝进来,最后就可以启用cmd,开始生成WebService了

我的做法是拷贝一个cmd的快捷方式进来,然后右键属性,把它的“起始位置”设置为F:\webSite\gsoap_2.8.18\gsoap-2.8\gsoap\bin\win32,应用后启动此快捷方式,那么 *** 作目录就为当前目录了。利用wsdl2h.exe,使用cmd生成WebService的头文件如下:

wsdl2h -o 头文件名 WSDL文件名或URL

说明:(注意大小写)

-o 文件名,指定输出头文件名

-n 命名空间前缀 代替默认的ns

-c 产生纯C代码,否则是C++代码

-s 不要使用STL代码

-t 文件名,指定type map文件,默认为typemap.dat

-e 禁止为enum成员加上命名空间前缀

这里我生成一个foxwelltech.h头文件,不使用STL,结果如下:

生成的foxwelltech.h就包含了所有预先写好的WebService函数接口。从cmd中可以看到该命令需要用到typemap.dat文件,所以如果没有该文件,会提示找不到文件,需要从别处拷贝过来。接下来,我们按照cmd最后的提示,进行下一步,用soapcpp2.exe来生成可用的.h和.cpp文件:

soapcpp2常用选项:(注意大小写)

-C 仅生成客户端代码

-S 仅生成服务器端代码

-L 不要产生soapClientLib.c和soapServerLib.c文件

-c 产生纯C代码,否则是C++代码(与头文件有关)

-I 指定import路径(见上文)

-x 不要产生XML示例文件

-i 生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)

如果报错:Critical error: #import: Cannot open file "stlvector.h"for reading.

Hint: use option -I<path>(you candefine multiple paths separated with '')

则要使用-I选项指定gSOAP的 import文件路径

我使用的命令行是:

soapcpp2 -C -x foxwelltech.h -IF:\Website\gsoap_2.8.18\gsoap-2.8\gsoap\import

意为根据foxwelltech.h只生成客户端代码,不生成无用的xml文件,另外要引用一个import文件夹,结果如下:

最后的Compilation successful说明了一切,结果就是生成了一个nsmap命名空间文件,二个.h文件,三个.cpp文件

最后,我们新建一个C++的控制台工程来使用它们

注意:

1. 第一步生成的foxwelltech.h不用加进来,直接使用由它生成的后续.h和.cpp即可

2. stdsoap2.h和stdsoap2.cpp来自于路径:F:\Website\gsoap_2.8.18\gsoap-2.8\gsoap

3. 除nsmap文件外,其他6个都要添加到工程里面编译,然后添加测试代码

下载开源的gSOAP,并解压到本地的D:\webservice文件夹下。

以获取天气为例,下载天气预报的wsdl文件,保存文件Weather.wsdl到D:\webservice文件夹下。

基于Weather.wsdl创建头文件Weather.h。

基于头文件Weather.h创建soap接口源文件。

开启Visual Studio 2008,新建一个项目。项目的保存目录是D:\webservice\Weather

将第3、4步骤生成的文件拷贝到项目的保存目录D:\webservice\Weather下,并从gsoap目录下拷贝两个文件stdsoap2.h,stdsoap2.cpp。将源文件加入到项目中。

新建一个main.cpp文件,并输入代码。

编译程序,运行,查看结果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11715693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存