C++访问WebService (需要密码验证)
1.准备
使用gsoap工具类库,可以通过链接去下载最新版本,按照步骤去安装
本人使用的gsoap是2.8版本
2.使用
安装完成后找到这个路径,路径下有这样两个文件
1.在此路径下创建一个 wsmap.dat 文件,内容如下:
xsd__string = | std::wstring | wchar_t*
2.打开cmd,输入如下命令切换到D盘:
d:
3.切换这个路径下 :(在cmd输入以下命令)
cd D:\WebService\gsoap-2.8\gsoap\bin\win64
4.输入以下命令生成 WebService.h 文件
wsdl2h -o WebService.h -t wsmap.dat http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
如果网站需要密码验证:(如下输入可得到WebService.h)
wsdl2h -o WebService.h -r:用户名:密码 -t wsmap.dat http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
5.输入以下命令生成C++头文件和源文件
soapcpp2 -i -C -x -L WebService.h -I D:\WebService\gsoap-2.8\gsoap\import
6.把生成的文件添加到 c++工程里面:
还有这两个文件:
c++工程调用代码:
int test()
{
ZWIntegrationServicePortBindingProxy proxy("http://windchill.pisx.com/Windchill/servlet/ZWIntegrationService");
//调用invokeSrv函数
ns1__invokeSrv invokeSrv;
ns1__invokeSrvResponse IksRes;
proxy.userid = "";//账号
proxy.passwd = "";//密码
invokeSrv.soap = &proxy;
invokeSrv.arg0 = _T("");//参数一
invokeSrv.arg1 = _T("");//参数二
int iRet = proxy.invokeSrv(&invokeSrv, IksRes);//invokeSrv :Web 服务约定接口
auto szError = proxy.soap_fault_string();//返回错误字符串
return iRet;//返回SOAP_OK或错误代码
}