VS2010使用c++、gSOAP调用WebService 图文教程
上篇写了“VS2010使用c++、gSOAP创建的WebService 图文教程”,有创建就要有调用,这里就讲1下相同语言框架技术下的调用功能。 1、下载WSDL文件这1步其实要以跳过! 上篇中 “5、启动WebService并测试》5、打开阅读器,输入你的IP:端口号/itoa?wsdl 访问看看吧,正常的话应当显示“itoa.wsdl”文件的内容” 我们知道对方提供的WebService地址,理论上就能够通过以上方式获得WSDL文件的内容;我们的实现是通过“itoa?wsdl”来获得WSDL文件的内容,其它的实现或其它语言的实现多是通过“itoa.wsdl”来获得WSDL文件的内容。 固然,都是c++的,你也能够让对方把这个文件内容发送给你; 2、生成头文件及相干文件如果你下载的WSDL文件,履行以下步骤: 1、打开CMD命令提示符工具,切换到WSDL所在的目录 2、履行以下命令: wsdl2h itoa.wsdl 这时候后面会有提示:To finalize code generation,execute:
> soapcpp2 itoa.h
Or to generate C++ proxy and service classes:
> soapcpp2 -j itoa.h 我们再履行: soapcpp2 -i -I D:gSOAPgsoap⑵.8gsoapimport itoa.h 履行后目录中的文件以下: 如果你没有下载的WSDL文件,履行以下步骤: 1、打开CMD命令提示符工具,切换保存生成相干文件的目录 2、生成头文件 wsdl2h -o itoa.h http://localhost:8087/itoa?wsdl 注意:这类方式要保证你的WebService服务在运行中,如果不在同1台电脑上需要将"localhost"改成IP地址,而上篇创建时的头文件中也是改成对应的IP地址!3、生成代理文件 soapcpp2 -i -C -I D:gSOAPgsoap⑵.8gsoapimport itoa.h 3、创建项目1、打开VS2010,文件》新建》项目 2、左边模板当选择Visual c++,右边选择 Win32 控制台利用程序,输入项目名称,选择保存位置,勾选“为解决方案创建目录”,肯定 3、下1步 4、取消“预编译头”的选中状态,完成 4、配置编译1、打开项目文件目录 2、将第2步生成的代码复制到项目目录下 3、添加文件到项目 4、选择要添加到项目的文件 注意:其实不是要把所有文件都添加到项目里!需要的文件参考下图,或下载源码! 5、替换“itoaClient.cpp”文件的内容,使用以下代码: #include "soapitoaProxy.h"
#include "itoa.nsmap"
#include<string>
int main()
{
itoaProxy service;
double result;
if (service.add(111.0,222.0,result) == SOAP_OK)
std::cout << "The sum of 1.0 and 2.0 is " << result << std::endl;
else
service.soap_stream_fault(std::cerr);
std::string s2("this is a string");
if (service.itoa(12345,s2) == SOAP_OK)
std::cout << "The itoa is " << s2 << std::endl;
else
service.soap_stream_fault(std::cerr);
service.destroy(); // delete data and release memory
} 6、编译生成,在项目名称上单击鼠标右键,选择重新生成 选择重新生成的好处是避免之前的生成毛病影响本次生成的结果 5、运行测试1、打开CMD命令提示符 2、切换目录到生成输入目录 3、履行命令:itoaClietn.exe 注意:要保证你的WebService服务在运行中! 结束语有1点需要注意:我这里只是个示例,可能存在内存泄漏之类的不安全问题,包括上篇中的代码! 这个例子只是讲了C++如何基于gSOAP调用WebService的例子,C语言与此方式不同,请参考官方用户手册; 在学习实践的进程中发现命令选项用错1个,或项目中多包括了1个文件,都可以致使编译链接毛病。 本文源码下载:http://download.csdn.net/detail/testcs_dn/9534678 参考: http://blog.csdn.net/testcs_dn/article/details/51463367 http://www.genivia.com/products.html http://www.genivia.com/doc/soapdoc2.html http://www.cppblog.com/qiujian5628/archive/2008/06/19/54019.html http://www.cppblog.com/qiujian5628/archive/2008/09/16/61945.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |