用 WebXml 提供的“腾讯QQ在线状态 WEB 服务”做示范。Web 服务链接如下:
Endpoint: http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx
Disco : http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?disco
WSDL : http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
一种简单使用
gSOAP 的步骤如下:
1. 另存 http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl 为 WSCheckQqOnline.wsdl
2. 在命令行执行:
wsdl2h -o WSCheckQqOnline.h WSCheckQqOnline.wsdl
3. 在命令行执行:
soapcpp2 -C -L -i -IE:\gSOAP\gsoap-2.8\gsoap\import -x WSCheckQqOnline.h
4. 把第 3 步生成的下列 8 个文件添加到工程中:
(1) soapStub.h // -> 头文件
(2) soapH.h // -> 头文件
(3) soapC.cpp // -> 源文件
(4) soapqqOnlineWebServiceSoapProxy.h // -> 头文件
(5) soapqqOnlineWebServiceSoapProxy.cpp // -> 源文件
(6) qqOnlineWebServiceSoap.nsmap // -> 工程目录(当做 .cpp 文件)
(7) stdsoap2.h // -> 头文件
(8) stdsoap2.cpp // -> 源文件
5. 在 main.cpp 中先后添加:
#include "qqOnlineWebServiceSoap.nsmap"
#include "soapqqOnlineWebServiceSoapProxy.h"
6. 再补充。
示例代码:
#include "qqOnlineWebServiceSoap.nsmap"
#include "soapqqOnlineWebServiceSoapProxy.h"
#include <string>
#include <iostream>
int main()
{
qqOnlineWebServiceSoapProxy proxy("http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx");
// 创建 qqCheckOnline 第一个参数
_ns1__qqCheckOnline qq;
qq.soap = &proxy;
std::string qqCode("5515060");
qq.qqCode = &qqCode;
// 创建 qqCheckOnline 第二个参数
_ns1__qqCheckOnlineResponse qqResponse;
proxy.qqCheckOnline(&qq, &qqResponse);
std::cout << *qqResponse.qqCheckOnlineResult << std::endl;
return 0;
}
VS2008中目录结构:
![](http://hi.csdn.net/attachment/201108/30/0_13147060053tAz.gif)
可参考链接:
1. http://www.cs.fsu.edu/~engelen/soapdoc2.html
2. http://www.codeproject.com/KB/webservices/CurrencyConvertor.aspx
http://www.codeproject.com/KB/webservices/CurrencyConvertor2.aspx
3. http://www.cnblogs.com/Lvkun/archive/2010/03/30/gSoap_Note.html
4. http://www.cppblog.com/qiujian5628/archive/2008/06/19/54019.html