用 WebXml 提供的“騰訊QQ在線狀態(tài) WEB 服務(wù)”做示范。Web 服務(wù)鏈接如下:
- 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
Endpoint: http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmxDisco : http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?discoWSDL : http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
一種簡(jiǎn)單使用
gSOAP 的步驟如下:
- 1. 另存 http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl 為 WSCheckQqOnline.wsdl
- 2. 在命令行執(zhí)行:
- wsdl2h -o WSCheckQqOnline.h WSCheckQqOnline.wsdl
- 3. 在命令行執(zhí)行:
- soapcpp2 -C -L -i -IE:\gSOAP\gsoap-2.8\gsoap\import -x WSCheckQqOnline.h
- 4. 把第 3 步生成的下列 8 個(gè)文件添加到工程中:
- (1) soapStub.h // -> 頭文件
- (2) soapH.h // -> 頭文件
- (3) soapC.cpp // -> 源文件
- (4) soapqqOnlineWebServiceSoapProxy.h // -> 頭文件
- (5) soapqqOnlineWebServiceSoapProxy.cpp // -> 源文件
- (6) qqOnlineWebServiceSoap.nsmap // -> 工程目錄(當(dāng)做 .cpp 文件)
- (7) stdsoap2.h // -> 頭文件
- (8) stdsoap2.cpp // -> 源文件
- 5. 在 main.cpp 中先后添加:
- #include "qqOnlineWebServiceSoap.nsmap"
- #include "soapqqOnlineWebServiceSoapProxy.h"
- 6. 再補(bǔ)充。
1. 另存 http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl 為 WSCheckQqOnline.wsdl2. 在命令行執(zhí)行: wsdl2h -o WSCheckQqOnline.h WSCheckQqOnline.wsdl3. 在命令行執(zhí)行: soapcpp2 -C -L -i -IE:\gSOAP\gsoap-2.8\gsoap\import -x WSCheckQqOnline.h4. 把第 3 步生成的下列 8 個(gè)文件添加到工程中: (1) soapStub.h // -> 頭文件 (2) soapH.h // -> 頭文件 (3) soapC.cpp // -> 源文件 (4) soapqqOnlineWebServiceSoapProxy.h // -> 頭文件 (5) soapqqOnlineWebServiceSoapProxy.cpp // -> 源文件 (6) qqOnlineWebServiceSoap.nsmap // -> 工程目錄(當(dāng)做 .cpp 文件) (7) stdsoap2.h // -> 頭文件 (8) stdsoap2.cpp // -> 源文件5. 在 main.cpp 中先后添加: #include "qqOnlineWebServiceSoap.nsmap" #include "soapqqOnlineWebServiceSoapProxy.h"6. 再補(bǔ)充。
示例代碼:
- #include "qqOnlineWebServiceSoap.nsmap"
- #include "soapqqOnlineWebServiceSoapProxy.h"
- #include <string>
- #include <iostream>
- int main()
- {
- qqOnlineWebServiceSoapProxy proxy("http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx");
-
- _ns1__qqCheckOnline qq;
- qq.soap = &proxy;
- std::string qqCode("5515060");
- qq.qqCode = &qqCode;
-
- _ns1__qqCheckOnlineResponse qqResponse;
- proxy.qqCheckOnline(&qq, &qqResponse);
- std::cout << *qqResponse.qqCheckOnlineResult << std::endl;
- return 0;
- }
#include "qqOnlineWebServiceSoap.nsmap"#include "soapqqOnlineWebServiceSoapProxy.h"#include <string>#include <iostream> int main(){ qqOnlineWebServiceSoapProxy proxy("http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx"); // 創(chuàng)建 qqCheckOnline 第一個(gè)參數(shù) _ns1__qqCheckOnline qq; qq.soap = &proxy; std::string qqCode("5515060"); qq.qqCode = &qqCode; // 創(chuàng)建 qqCheckOnline 第二個(gè)參數(shù) _ns1__qqCheckOnlineResponse qqResponse; proxy.qqCheckOnline(&qq, &qqResponse); std::cout << *qqResponse.qqCheckOnlineResult << std::endl; return 0;}
VS2008中目錄結(jié)構(gòu):
可參考鏈接:
- 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