一、底層呼叫的本質
說白了就是xml文件的生成、傳遞、解析的過程。
客戶端生成xml檔案後通過網路傳送給伺服器,伺服器解析xml,獲取引數執行方法得到返回值,之後生成xml檔案,再傳輸給客戶端,客戶端解析xml後顯示資料。
二、wsdl文件解析
先看一下整體的分析圖:
1.介面端
先看乙個整體的文件框架
文件中含有2n個message(n指的是方法個數),乙個webservice操作需要從客戶端發訊息給服務端,服務端有乙個響應訊息返回。所以一次web service呼叫需要兩個訊息。
wsdl:porttype節點如下:
裡面含有n個operation,而且每個操作包含input和output訊息,訊息的name和wsdl:message 標籤的name屬性相對應,其實一次webservice呼叫不是呼叫方法,是傳送soap訊息(xml文件)
對於sayhi的input訊息來說:name=「sayhi」,找到wsdl:message的name屬性相同的標籤,具體如下:
傳入訊息是:sayhi元素,從wsdl:type中找到element元素name=「sayhi」,然後找到型別是sayhi的標籤,如下:
所以傳入的訊息格式是:
[html]view plain
copy
print?
//出現次數0-1
<
sayhi
>
<
arg0
>字串
arg0
>
sayhi
>
傳出的訊息分析同上面,sayhiresponse從schema中查詢,如圖:
返回的訊息格式如下:
[html]view plain
copy
print?
<
sayhiresponse
>
<
return
>string
return
>
sayhiresponse
>
2.實現端先看整體的結構:
包含了binding和service的標籤,service裡面包含了webservice的服務位址,如下:
標記的部分是web service發布的服務位址
其中binding部分包含了詳細的方法定義和傳輸風格(document,面向文件),如下:
三、總結
wsdl文件描述了web service的3個方面:
what:「什麼」操作
how:應該「怎樣」呼叫
只要得到web service的wsdl文件就可以呼叫web service。大家可以試著分析下。其實這個文件並不難,不要被它太多的標籤嚇唬。
動態呼叫WebService
public static object invokewebservice string url,string methodname,object args 其中,url是web服務的位址,methodname是要呼叫服務方法名,args是要呼叫web服務所需的引數,返回值就是web服務返回的結果了...
呼叫WebService出錯
呼叫乙個遠端webservice編譯出錯 錯誤2 型別 system.web.services.protocols.soaphttpclientprotocol 在未被引用的程式集中定義。必須新增對程式集 system.web.services,version 2.0.0.0,culture neu...
webservice建立呼叫
在乙個分布式應用上面用到了webservice,記錄一下。1 建立web專案 xfire 2 編寫介面以及實現類 3 在web info下面新建meta inf資料夾,新建services.xml。內容如下 名稱介面全稱 介面實現 4 編輯web.xml對service攔截 6 客戶端呼叫,這裡面就...