1. 程式人生 > 實用技巧 >基礎類庫積累--HTTP操作類

基礎類庫積累--HTTP操作類

前言說明

你每去一家公司,每個公司都是自己封裝好的基礎類庫,而這些類庫都是經歷實際專案檢驗的,功能應該完全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提交資料。