c#:WebService及其幾種呼叫方式
阿新 • • 發佈:2018-12-11
C-sharp in itlao5.com之前做移動端開發,都不清楚WebService是啥東東,現在接觸c#,專案中有三處WebService呼叫,就不得不與其打交道了,最近碰上第三方介面地址更換,而自己專案因功能也需要增加WebService方法,所以瞭解了下WebService及其呼叫。
一、概念
WebService:我們可以理解為基於web的服務,它具有跨語言,跨平臺的特性,通過web/http的方式實現遠端呼叫,可以讓程式的資料操作與功能模組分離。
WebService的幾個基礎概念:
- XML:擴充套件性標記語言,用於傳輸格式化的資料,是Web服務的基礎;
- WSDL:Web服務描述語言,通過xml的形式描述服務的地址及呼叫方式;
- SAOP:基於http+xml的簡單物件訪問協議,用於資料的網路傳輸。
SAOP主要有以下幾個節點:
Envelope(必須) – 以XML的根元素出現;
Headers(可選) – 常新增一些身份驗證資料;
Body(必須) – 包含要執行的伺服器的方法和傳送到伺服器的資料。
示例:
<Envelope> <Header> </Header> <Body> <方法名> 引數 </方法名> </Body> </Envelope>
二、呼叫方式
WebService呼叫方式有多種,這裡主要說兩種:
方式1. 引用wsdl檔案
即通過引用wsdl檔案的方式直接生成WebService呼叫類,如下圖:
vs+c#引用wsdl呼叫webService
這種方式適用於使用vs+c#開發的WebService。只需要如上圖新增服務引用,根據後面提示輸入url,一步步操作即可,呼叫時與本地方法的呼叫無異。
這種方式使用很簡單,但缺點也不少,如:介面的每次更新都需要重新生成引用、如果介面使用其他語言開發則呼叫會出現問題。
方式2. 直接WebRequest請求
通過stringbuilder拼接好saop包內容,然後通過webRequest post方式傳送,contentType使用"application/soap+xml; charset=utf-8";即可。
//程式碼示例後續有時間補充
原文:簡書ThinkinLiu 部落格: IT老五
當然還有其他方式可以呼叫WebService,如動態呼叫等,因為我用到的就只有上面兩種,這裡就不探究其他方式了。