C#建立webservice中并添加add实现加法。测试并记录url。
接下来我们用c++来调用webservice。完成链接需要soap协议,这里我们用到gsoap库。
下载完成后,需要用到import文件夹,wsdl2h.exe,soapcpp2.exe。
wsdl2h.exe用来完成wsdl转换.h文件。
soapcpp2.exe用来生成框架文件及接口。
下面测试已经记录该webservice的url:http://localhost:39014/Service1.asmx
首先生成.h文件这里我们使用TDSoap做为我们这次的文件名。通过命令行进入gsoap所在文件夹,执行:
wsdl2h -s -t TDSoap.dat -o TDSoap.h http://localhost:39014/Service1.asmx?wsdl
成功生成TDSoap.h,接下来执行:
soapcpp2 -C -I E:\project\gsoap\importTDSoap.h -L -i –x
这里的E:\project\gsoap\import是我的计算机上的import文件夹地址,根据情况设置。
执行后生成很多新文件。
新建c++控制台应用程序TestGSoap,把上面新生成的文件及stdsoap2.h、stdsoap2.cpp拷贝到新建c++程序中。把soapC.cpp、soapService1SoapProxy.cpp、stdsoap2.cpp导入到工程源文件文件夹(防止链接错误),前期准备工作已完成。
添加#include "soapService1SoapProxy.h"与#include "Service1Soap.nsmap"
最后实现add,完成main中add的调用。
int add(int a,int b)
{
Service1SoapProxy proxy("http://localhost:39014/Service1.asmx",SOAP_C_UTFSTRING);
//Service1SoapProxyproxy;
_ns1__add add;
add.a = 1;
add.b = 2;
_ns1__addResponse addr;
if(proxy.add(&add,addr) == SOAP_OK)
{
returnaddr.addResult;
}
else
return-1;
}
int _tmain(int argc,_TCHAR* argv[])
{
cout<<add(1,2)<<endl;
return 0;
}
查看结果
注意:测试时注意url是否匹配
gsoap不仅可以做客户端也可以做服务端,这块资料很多不再作讲解。