資源描述:
《webService調(diào)用過程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、如何調(diào)用web服務(wù)Web服務(wù)簡介我們已經(jīng)知道如何在java端調(diào)用web服務(wù)(見web服務(wù)使用說明文檔),但是如何在其他平臺的其他客戶端調(diào)用我們的web服務(wù)呢?下面做一下簡單介紹并通過Gsoap舉一個請求服務(wù)的例子。WebService是一種跨平臺的解決方案。在通訊過程中,客戶端和服務(wù)端并不需要知道確切的實現(xiàn)(無論是語言級別還是操作系統(tǒng)平臺以及系統(tǒng)結(jié)構(gòu)).系統(tǒng)運行時,服務(wù)提供程序提供的外圍接口描述地址在系統(tǒng)根目錄下的services目錄下。如下所示http://ServerIP:ServerPort/AppRoot/services/dwservice?wsdl接下來如何
2、調(diào)用并是使用這個服務(wù)接口和其他訪問標(biāo)準(zhǔn)服務(wù)的過程類似。通過gsoapGsoap:一個提供soap協(xié)議封裝和請求web服務(wù)的工具集合。詳細(xì)參見http://www.cs.fsu.edu/~engelen/soap.html的一個實現(xiàn)版本簡單舉例。1.獲取gsoap安裝包http://sourceforge.net/project/showfiles.php?group_id=527811.解壓后目錄結(jié)構(gòu)2.進(jìn)入bin目錄,找到兩個工具如下使用如下命令wsdl2h-c-ooutfile.hinfile.wsdl生成所需的頭文件如下:執(zhí)行wsdl2h-c–oappservic
3、e.hhttp://yourappserver:port/approot/services/dwservice?wsdl結(jié)果在該目錄下生成appservice.h1.根據(jù)頭文件生成客戶端存根執(zhí)行命令:soapcpp2-coutfile.h(參數(shù)的意思是生成c代碼,可選,具體使用方式參見gsoap使用手冊)本例中執(zhí)行下面的操作:soapcpp2-cappservice.h可以看到生成代碼如下:在下面目錄中找到soap頭文件連同上面的文件一同導(dǎo)入到c/c++項目工程中如下(根據(jù)情況選擇stdsoap2.c還是stdsoap2.cpp)1.建立測試類client.c代碼如下:
4、#include#include#include"soapH.h"#include"dwserviceSoap11Binding.nsmap"intmain(void){structsoap*soap=soap_new();struct_ns2__serviceAdapterResponseout;char*url="http://yourserverIp:port/approot/services/dwservice.dwserviceHttpSoap11Endpoint/";struct_ns2__serviceAdapterm
5、sg;msg.xmlPara="
";//soap_set_mode(soap,SOAP_C
6、_MBSTRING);//設(shè)置soap編碼為UTF-8,防止中文亂碼soap->mode
7、=SOAP_C_MBSTRING;soap_set_mode(soap,SOAP_C_MBSTRING);setlocale(0,"chs");if(soap_call___ns3__serviceAdapter(soap,url,"urn:serviceAdapter",&msg,&out)==SOAP_OK){printf(out.return_);printf("OK");system("PAUSE");return0;}return0;}代碼注意事項:xmlPara屬性的值
8、需要是一個xml。其格式必須符合地緯公司的規(guī)定的數(shù)據(jù)交換格式。其中_ServiceMethod屬于關(guān)鍵字其值是地緯公司開放服務(wù)函數(shù)接口(在服務(wù)發(fā)布描述文件中說明)對于返回值同樣也是一個XML片段。格式按照地緯公司數(shù)據(jù)交換格式定義。如下: