C++使用gSOAP调用WebService

1、从sourceforge下载最新的gSOAP

2、解压后,到bin\win32目录下

3、使用命令参数-h查看帮助

PS> .\wsdl2h.exe -h
PS> .\soapcpp2.exe -h

4、使用wsdl2h.exe生成头文件

PS> .\wsdl2h.exe -x -n WS -o WhetherService.h http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL
# 参数说明:
# -n 使用WS代替默认的ns前缀

5、使用soapcpp2.exe生成其他文件

.\soapcpp2.exe -x .\WhetherService.h -p WhetherService -C -L -I E:\C++\gsoap_2.8.70\gsoap-2.8\gsoap\import
# 参数说明:
# -p 使用WhetherService代替默认的文件名soap前缀
# -C 只生成客户端代码
# -L 不生成soapClientLib/soapServerLib文件
# -I 指定import目录

6、将生成的文件添加到工程中,并添加stdsoap2.hstdsoap2.cpp,可在gsoap目录下找到这两个文件。
7、在使用的地方添加头文件,就可以使用了

#include "WhetherServiceStub.h"
#include "WeatherWebServiceSoap.nsmap"
    soap soap;
    _WS1__getSupportCity getSupportCity;
    _WS1__getSupportCityResponse getSupportCityResponse;

    string strAddress = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";

    soap_init(&soap);
    soap_set_mode(&soap, SOAP_C_UTFSTRING);
    
    string strProvince = As_Utf8FromString("北京");
    getSupportCity.byProvinceName = &strProvince;

    soap_call___WS1__getSupportCity(&soap, strAddress.c_str(), NULL, &getSupportCity, getSupportCityResponse);
    for (int i = 0; i < getSupportCityResponse.getSupportCityResult->string.size(); i++)
    {
        //.......
    }
    
    soap_destroy(&soap);
    soap_done(&soap);

你可能感兴趣的:(C++使用gSOAP调用WebService)