c#發送簡單的post、get請求


  • POST發送請求及接受響應流程 
  1. 根據目標地址址創建HttpWebRequest對象
  2. 設置響應的請求參數------Method、ContentType 等
  3. 使用HttpWebRequest對象獲取請求流並且寫入消息體   
  4. 使用HttpWebRequest對象獲取響應流並讀取流中數據(在獲取過程中就是發送請求並接受響應)
  • GET發送請求及接受響應流程
  1. 把目標地址和查詢字符串拼接在一起(如果有查詢字符串)使用拼接的字符串創建HttpWebRequest對象
  2. 設置響應的請求參數------Method、ContentType 等
  3. 使用HttpWebRequest對象獲取響應流並讀取流中數據(在獲取過程中就是發送請求並接受響應)

   以下為代碼:

        兩個請求方法 和讀取方法

        /// <summary>
        /// 發送http post請求
        /// </summary>
        /// <param name="url">地址</param>
        /// <param name="parameters">查詢參數集合</param>
        /// <returns></returns>
        public HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters)
        {
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;//創建請求對象
            request.Method = "POST";//請求方式
            request.ContentType = "application/x-www-form-urlencoded";//鏈接類型
            //構造查詢字符串
            if (!(parameters == null || parameters.Count == 0))
            {
                StringBuilder buffer = new StringBuilder();
                bool first = true;
                foreach (string key in parameters.Keys)
                {

                    if (!first)
                    {
                        buffer.AppendFormat("&{0}={1}", key, parameters[key]);
                    }
                    else
                    {
                        buffer.AppendFormat("{0}={1}", key, parameters[key]);
                        first = false;
                    }
                }
                byte[] data = Encoding.UTF8.GetBytes(buffer.ToString());
                //寫入請求流
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
            }
            return request.GetResponse() as HttpWebResponse;
        }
        /// <summary>
        /// 發送http Get請求
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static HttpWebResponse CreateGetHttpResponse(string url)
        {
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "GET";
            request.ContentType = "application/x-www-form-urlencoded";//鏈接類型
            return request.GetResponse() as HttpWebResponse;
        }
        /// <summary>
        /// 從HttpWebResponse對象中提取響應的數據轉換為字符串
        /// </summary>
        /// <param name="webresponse"></param>
        /// <returns></returns>
        public string GetResponseString(HttpWebResponse webresponse)
        {
            using (Stream s = webresponse.GetResponseStream())
            {
                StreamReader reader = new StreamReader(s, Encoding.UTF8);
                return reader.ReadToEnd();
            }
        }

  調用

//post請求並調用

Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("id", "4");
textBox1.Text = GetResponseString(CreatePostHttpResponse("https://www.baidu.com/", dic));
//get請求並調用

textBox3.Text = GetResponseString(CreateGetHttpResponse("https://i.cnblogs.com/EditPosts.aspx?opt=1"));

  

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM