Webservice 底層呼叫的本質

2021-08-10 02:01:02 字數 2188 閱讀 7013

一、底層呼叫的本質

說白了就是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 客戶端呼叫,這裡面就...