C#发送简单的post、get请求
- POST發送請求及接受響應流程
- 根據目標地址址創建HttpWebRequest對象
- 設置響應的請求參數------Method、ContentType 等
- 使用HttpWebRequest對象獲取請求流并且寫入消息體
- 使用HttpWebRequest對象獲取響應流并讀取流中數據(在獲取過程中就是發送請求并接受響應)
- GET發送請求及接受響應流程
- 把目標地址和查詢字符串拼接在一起(如果有查詢字符串)使用拼接的字符串創建HttpWebRequest對象
- 設置響應的請求參數------Method、ContentType 等
- 使用HttpWebRequest對象獲取響應流并讀取流中數據(在獲取過程中就是發送請求并接受響應)
以下為代碼:
兩個請求方法 和讀取方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
/// <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();
}
}
|
調用
1
2
3
4
5
6
7
8
|
//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"));
|