gsoap的使用(调用webservice)
这些天一直在折腾openssl和sqlite,都忘记了还有gsoap这个也是花了很多时间和精力才弄明白的东东。刚好下午开完例会不想干活了。于是先就写个中文版的gsoap的教程贴出来共享下。 ?????? 先抄一段介绍性的话:gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端。由于 gSOAP具 有相当不错的兼容性,通过gSOAP,我们就可以调用由Java,.Net,Delhpi,PHP等语言开发的SOAP服务,或者向它们提供SOAP服务。 ?????? gsoap主页:http://www.voidcn.com/tag/http://sourceforge.net/projects/gsoap2 ?????? 下载解压后,可以在gsoapbinwin32里 找到wsdl2h.exe和soapcpp2.exe(另外还有linux和mac版本)。 ???????? 了解了这些之后,接下来该如何上手? ????????? 当然是新建一个web service啦。在VS2005里面新建一个ASP.NET Web 服务MyWebService. ?????????? ????????? 这是一个很简单的web method,仅仅用来测试一下而已啦。 ?????????? 运行这个web service,会出来一个页面 ??????????? ????????????? 点击 service description,就可以看到wsdl文件。把地址栏的路径保存下来。比如我的就是http://localhost:2488/Service1.asmx?WSDL ????????????? 好了,这会服务器端就有了。再写客户端的代码。在写客户端的代码之前,要利用刚刚的那两个工具和wsdl文件生成一些必要的cpp和头文件。 ????????????? 首先运行,cmd,然后打开gsoapbinwin32,运行wsdl2h.exe ?????????????? 用法: wsdl2h -o 头文件名?WSDL文件名或URL?例子:?wsdl2h -o test.h?http://localhost:2488/Service1.asmx?WSDL可以看到win32里面多了一个test.h文件。好啦,今天就到这里啦。嘿嘿嘿。精彩待续,敬请期待DANA的大作哈哈哈哇咔咔飘走~~~~~~~------------------------分割分割分割------------------------------------ win32里面多了一个头文件test.h之后,在命令行里面运行soapcpp2.exe 用法:soapcpp2.exe 头文件名 ????? soapcpp2常用选项
例子:soapcpp2.exe -C test.h 如果报错:Critical error: #import: Cannot open file "stlvector.h" for reading. Hint: use option -I<path> (you can define multiple paths separated with ';') 则要要使用-I选项指定gSOAP的 import文件路径,这个路径是"$gsoapgsoapimport": soapcpp2.exe -C test.h -I D:workgsoap_2.7.13gsoap-2.7gsoapimport 这个时候win32目录下会很多有文件生成。 将Service1Soap.nsmap,soapC.cpp,soapClient.cpp,soapH.h,soapStub.h, 以及gSoap工程根目录下的stdsoap2.h,stdsoap2.cpp,总共七个文件添加到客户端project中,再添加代码: #include "Service1Soap.nsmap" 修改soapC.cpp,soapClient.cpp,stdsoap2.cpp的编译条件为不需要预编译头文件,gSoap不需要MFC。 准备工作到现在就全部做好了。各位就按照自己的需要写客户端程序吧。 其实就是调用服务器端的web method啦。 原文:http://hi.baidu.com/ueuvtoiitabgkwd/item/7c61a166f90c7e94c4d24914
webservice 地址:http://www.webxml.com.cn/webservices/chinastockwebservice.asmx 另也可以使用MS的SoapToolkit的库调用webservice
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |