1. 程式人生 > >c#:WebService及其幾種呼叫方式

c#:WebService及其幾種呼叫方式

之前做移動端開發,都不清楚WebService是啥東東,現在接觸c#,專案中有三處WebService呼叫,就不得不與其打交道了,最近碰上第三方介面地址更換,而自己專案因功能也需要增加WebService方法,所以瞭解了下WebService及其呼叫。

9166166-3022468646c120e8.png C-sharp in itlao5.com

一、概念

WebService:我們可以理解為基於web的服務,它具有跨語言,跨平臺的特性,通過web/http的方式實現遠端呼叫,可以讓程式的資料操作與功能模組分離。

WebService的幾個基礎概念:
  1. XML:擴充套件性標記語言,用於傳輸格式化的資料,是Web服務的基礎;
  2. WSDL:Web服務描述語言,通過xml的形式描述服務的地址及呼叫方式;
  3. SAOP:基於http+xml的簡單物件訪問協議,用於資料的網路傳輸。
    SAOP主要有以下幾個節點:
    Envelope(必須) – 以XML的根元素出現;
    Headers(可選) – 常新增一些身份驗證資料;
    Body(必須) – 包含要執行的伺服器的方法和傳送到伺服器的資料。
    示例:
<Envelope>
    <Header>
    </Header>
    <Body>
        <方法名>
            引數
        </方法名>
    </Body>
</Envelope>

二、呼叫方式

WebService呼叫方式有多種,這裡主要說兩種:

方式1. 引用wsdl檔案

即通過引用wsdl檔案的方式直接生成WebService呼叫類,如下圖:


9166166-3caba6215a858147.png vs+c#引用wsdl呼叫webService

這種方式適用於使用vs+c#開發的WebService。只需要如上圖新增服務引用,根據後面提示輸入url,一步步操作即可,呼叫時與本地方法的呼叫無異。
這種方式使用很簡單,但缺點也不少,如:介面的每次更新都需要重新生成引用、如果介面使用其他語言開發則呼叫會出現問題。

方式2. 直接WebRequest請求

通過stringbuilder拼接好saop包內容,然後通過webRequest post方式傳送,contentType使用"application/soap+xml; charset=utf-8";即可。

//程式碼示例後續有時間補充

原文:簡書ThinkinLiu 部落格: IT老五

當然還有其他方式可以呼叫WebService,如動態呼叫等,因為我用到的就只有上面兩種,這裡就不探究其他方式了。