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