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不僅可以做客戶端也可以做服務端,這塊資料很多不再作講解。