.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訪問。初始化並執行...