基礎類庫積累--HTTP操作類
阿新 • • 發佈:2020-08-11
前言說明
你每去一家公司,每個公司都是自己封裝好的基礎類庫,而這些類庫都是經歷實際專案檢驗的,功能應該完全OK,那我們為什麼不收集起來了,為自己所用了!這是我寫部落格的原因,分享給大家,雖然可能很簡單,給自己做個積累,使用時方便!
HttpPost
public static string Post(string url, string data, Dictionary<string, string> headers) { byte[] bytes = Encoding.UTF8.GetBytes(data); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); if (headers != null) { foreach (var key in headers.Keys) { request.Headers.Add(key, headers[key]); } } //寫資料 request.Method = "POST"; request.ContentLength = bytes.Length; request.ContentType = "application/json"; Stream reqstream = request.GetRequestStream(); reqstream.Write(bytes, 0, bytes.Length); //讀資料 request.Timeout = 300000; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream streamReceive = response.GetResponseStream(); StreamReader streamReader = new StreamReader(streamReceive, Encoding.UTF8); string strResult = streamReader.ReadToEnd(); //關閉流 reqstream.Close(); streamReader.Close(); streamReceive.Close(); request.Abort(); response.Close(); return strResult; }
簡介:
- url:請求地址
- data:傳送的資料
- headers:頭部資訊
- ContentType:這個要注意,如果Post的時候報HTTP:403,請檢查你傳遞的資料格式,以及傳遞的型別
HttpGet
public static String Get(String url, Encoding encode) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.ContentType = "text/html, application/xhtml+xml, */*"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream rs = response.GetResponseStream(); StreamReader sr = new StreamReader(rs, encode); var result = sr.ReadToEnd(); sr.Close(); rs.Close(); return result; }
簡介:
- url:請求的地址
- encode:請求網頁的編碼【如果編碼不一樣,請求的結果可能是亂碼】
- ContentType:不同的地址,他返回的型別不一樣[如果是API的介面,一般是application/json,如果是網頁,一般是text/html]
總結:
在C#後臺開發過程中,我們經常會用到Http的Get和Post這兩種方式,還有其他的方式什麼Delete,Put自己瞭解,我用C#做爬蟲的時候,有時候需要解析網頁,使用HttpGet,獲取網頁資訊進行處理,有時候需要模擬使用者登陸【走協議】,使用HttpPost提交資料。