准备
A、准备要调用的webservice接口的wsdl地址或wsdl文件
B、准备gsoap工具(下载地址:https://sourceforge.net/projects/gsoap2/files/)
使用
1、解压下载好的gsoap文件包,进入win32目录,将要生成客户端代码的wsdl文件复制到该目录下
2、在该目录下打开cmd窗口,输入以下命令生成头文件
.\wsdl2h.exe -o .\MBDWebService.h .\MBDWebService.wsdl
或已知该wsdl地址(该地址必须可访问)
.\wsdl2h.exe -o .\MBDWebService.h http://www.webxml.com.cn/WebServices/ MBDWebService?wsdl
生成头文件
3、根据MBDWebService.h头文件生成客户端代码,输入一下命令
.\soapcpp2.exe -C .\MBDWebService.h -I D:\c++callwebservice\gsoap_2.8.134\gsoap-2.8\gsoap\import -x
生成客户端代码如下:
4、使用
a、打开vs2015创建win32控制台应用程序
b、把刚才创建出来的客户端代码以及stdsoap2.h和stdsoap2.cpp复制到创建好的项目目录下
复制到创建好的项目目录中
c、在Vs2015中引入这些文件,添加-》现有项
d、在soapClient.cpp文件中可以看到调用的webservice接口的输入和输出,必要时需要修改地址中的ip和端口
e、调用:
struct soap m_oSoap; // SOAP的客户端
class _ns1__downloadFileNetDocAndCreateNC input; // WebService调用输入对象
class _ns1__downloadFileNetDocAndCreateNCResponse response; // WebService返回对象
// SOAP初始化
soap_init(&m_oSoap);
// 调用函数的参数赋值
string strName = "1223455";
input.xml = strName;
// 发送WebService请求,并获得返回结果
int nResult = soap_call___ns1__downloadFileNetDocAndCreateNC(&m_oSoap, NULL, NULL, &input, response);
// 操作成功
if (SOAP_OK == nResult)
{
// 输出返回结果
string strResult = response.downloadFileNetDocAndCreateNCReturn;
wcout.imbue(locale("chs"));
wcout << "wcout:" << strResult.c_str() << endl;
}
/// 关闭SOAP
soap_destroy(&m_oSoap);
soap_end(&m_oSoap);
soap_done(&m_oSoap);
system("pause");
注意:
在打包时,需要将所有生成的cpp文件修改属性:在项目中的cpp上右键属性,选择不使用预编译头