C 呼叫HTTP服務

2021-09-25 12:12:08 字數 3214 閱讀 4187

.net framework提供了用於執行http請求的類,本文將介紹如何使用c#呼叫外部提供的http介面。

在.net中,在system.net命名空間下有兩個類:httpwebrequest、httpwebresponse,這兩個類可用來訪問web伺服器上的資源。通常情況下,還需要用到system.web命名空間。system.web命名空間下有乙個httputility類,它提供了對html和url編碼和解碼字串的方法。

http介面最常見的輸出格式是json,另外,xml也是一種常見的格式,當然也可以是其它的格式,這取決於介面提供者。需要說明的是,.net framework廣泛支援以xml格式讀取和運算元據。

當然,上面提到的幾個類不僅可用到呼叫http介面,它們還可用來訪問任意web伺服器上的資源。

下面這個示例請求乙個url,然後將獲取到的資料列印出來:

using system;

using system.io;

using system.net;

using system.text;

// 建立乙個web請求

// 獲取web伺服器輸出的資料

有些時候,某些api介面會要求你使用post的方式訪問。傳送post請求時,需將資料寫入隨請求一起傳送的流中。

using system.web;

uri address =

newuri

("");

// 建立web請求

// 設定以post方式傳送請求

request.method =

"post"

;request.contenttype =

;// 需要傳遞給介面的引數

string tit =

"這是新聞標題"

;string context =

"這是新聞內容"

// 將引數轉為byte陣列

byte

bytedata = utf8encoding.utf8.

getbytes

(data.

tostring()

);// 設定請求頭內容的長度

request.contentlength = bytedata.length;

// 將引數寫入請求流

using

(stream poststream = request.

getrequeststream()

)// 獲取web伺服器輸出的資料

某些web伺服器提供的介面雖然是對外開放的,但是卻要求通過身份認證,並不是隨便可訪問的。通過向請求新增networkcredentials例項可以輕鬆完成此操作。

// 建立web請求

// 增加身份認證資訊到web請求

request.credentials =

newnetworkcredential

("username"

,"password");

// 獲取web伺服器輸出的資料

並不是每次http請求都能正常完成的。比如:網路異常、web伺服器異常、或者web伺服器認為該請求是錯誤或無效的,等等,都有可能造成http請求失敗。

當網路異常、web伺服器異常時,可通過捕獲異常來處理。若是web伺服器正常處理了,但它認為此請求不能正常完成任務,那麼我們就要根據此介面的文件來進行處理。通常,web伺服器會以http狀態碼的方式告訴請求者處理結果。當然,具體是何種形式,要以介面提供者的文件為準。

如果web伺服器沒有返回狀態碼200,請求超時或網路故障,則呼叫httprequest.getresponse將引發異常。重定向會被自動處理。

下面是乙個比較完整的示例,獲取web伺服器上的資料,並對http錯誤碼做了基本的處理。

public

static

void

printsource

(uri address)

try}

catch

(webexception wex)

' with the status code ()."

, errorresponse.statusdescription, errorresponse.statuscode,

errorresponse.statuscode);}

}}finally

}}

http服務呼叫tcp服務

參考 現在有了乙個http服務,還有乙個tars的tcp服務,如何用http服務裡呼叫tcp服務呢?將tars服務的tcpserver.tars 複製到 http服務的tars目錄裡 在http服務裡建立 tars tarsclient.proto.php created by phpstorm.u...

c呼叫go完成http請求

最近在把流 伺服器做靜態鏈結,但是流 伺服器裡面用到了curl做http請求,然後curl又引用了zlib,ssl庫,mmp,做靜態鏈結神煩。於是想到了用go做乙個靜態庫,然後呼叫。go編譯靜態庫 先搞乙個實現的檔案,如下 package main 包名必須是main func main 必須定義乙...

HTTP 呼叫介面(PHP)

1 http 呼叫介面 curl方法 註解 url 介面位址,params 介面引數 陣列 method 傳遞方式,header 訪問方式,timeout 設定curl允許執行的最長秒數 例子 我們可以通過php的curl函式的curlopt httpheader來配置設定host訪問。初始化並執行...