Post请求

1 //data
2 string cookieStr = "Cookie信息";
3 string postData = string.Format("userid={0}&password={1}", "参数1", "参数2");
4 byte[] data = Encoding.UTF8.GetBytes(postData);
5
6 // Prepare web request...
7 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.xxx.com");
8 request.Method = "POST";
9 //request.Referer = "https://www.xxx.com";
10 request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
11 request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36";
12 //request.Host = "www.xxx.com";
13 request.Headers.Add("Cookie", cookieStr);
14 request.ContentLength = data.Length;
15 Stream newStream = request.GetRequestStream();
16
17 // Send the data.
18 newStream.Write(data, 0, data.Length);
19 newStream.Close();
20
21 // Get response
22 HttpWebResponse myResponse = (HttpWebResponse)request.GetResponse();
23 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
24 string content = reader.ReadToEnd();
25 Console.WriteLine(content);
26 Console.ReadLine();

1 /// <summary>
2 /// 创建POST方式的HTTP请求
3 /// </summary>
4 /// <param name="url">请求的URL</param>
5 /// <param name="parameters">随同请求POST的参数名称及参数值字典</param>
6 /// <param name="timeout">请求的超时时间</param>
7 /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>
8 /// <param name="requestEncoding">发送HTTP请求时所用的编码</param>
9 /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
10 /// <returns></returns>
11 public static HttpWebResponse CreatePostHttpResponse(string url,IDictionary<string,string> parameters,int? timeout, string userAgent,Encoding requestEncoding,CookieCollection cookies)
12 {
13 if (string.IsNullOrEmpty(url))
14 {
15 throw new ArgumentNullException("url");
16 }
17 if(requestEncoding==null)
18 {
19 throw new ArgumentNullException("requestEncoding");
20 }
21 HttpWebRequest request=null;
22 //如果是发送HTTPS请求
23 if(url.StartsWith("https",StringComparison.OrdinalIgnoreCase))
24 {
25 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
26 request = WebRequest.Create(url) as HttpWebRequest;
27 request.ProtocolVersion=HttpVersion.Version10;
28 }
29 else
30 {
31 request = WebRequest.Create(url) as HttpWebRequest;
32 }
33 request.Method = "POST";
34 request.ContentType = "application/x-www-form-urlencoded";
35
36 if (!string.IsNullOrEmpty(userAgent))
37 {
38 request.UserAgent = userAgent;
39 }
40 else
41 {
42 request.UserAgent = DefaultUserAgent;
43 }
44
45 if (timeout.HasValue)
46 {
47 request.Timeout = timeout.Value;
48 }
49 if (cookies != null)
50 {
51 request.CookieContainer = new CookieContainer();
52 request.CookieContainer.Add(cookies);
53 }
54 //如果需要POST数据
55 if(!(parameters==null||parameters.Count==0))
56 {
57 StringBuilder buffer = new StringBuilder();
58 int i = 0;
59 foreach (string key in parameters.Keys)
60 {
61 if (i > 0)
62 {
63 buffer.AppendFormat("&{0}={1}", key, parameters[key]);
64 }
65 else
66 {
67 buffer.AppendFormat("{0}={1}", key, parameters[key]);
68 }
69 i++;
70 }
71 byte[] data = requestEncoding.GetBytes(buffer.ToString());
72 using (Stream stream = request.GetRequestStream())
73 {
74 stream.Write(data, 0, data.Length);
75 }
76 }
77 return request.GetResponse() as HttpWebResponse;
78 }
79 调用
80
81 string loginUrl = "https://passport.baidu.com/?login";
82 string userName = "userName";
83 string password = "password";
84 string tagUrl = "http://cang.baidu.com/"+userName+"/tags";
85 Encoding encoding = Encoding.GetEncoding("gb2312");
86
87 IDictionary<string, string> parameters = new Dictionary<string, string>();
88 parameters.Add("tpl", "fa");
89 parameters.Add("tpl_reg", "fa");
90 parameters.Add("u", tagUrl);
91 parameters.Add("psp_tt", "0");
92 parameters.Add("username", userName);
93 parameters.Add("password", password);
94 parameters.Add("mem_pass", "1");
95 HttpWebResponse response = HttpWebResponseUtility.CreatePostHttpResponse(loginUrl, parameters, null, null, encoding, null);
96 string cookieString = response.Headers["Set-Cookie"];
Get请求

1 /// <summary>
2 /// 创建GET方式的HTTP请求
3 /// </summary>
4 /// <param name="url">请求的URL</param>
5 /// <param name="timeout">请求的超时时间</param>
6 /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>
7 /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
8 /// <returns></returns>
9 public static HttpWebResponse CreateGetHttpResponse(string url,int? timeout, string userAgent,CookieCollection cookies)
10 {
11 if (string.IsNullOrEmpty(url))
12 {
13 throw new ArgumentNullException("url");
14 }
15 HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
16 request.Method = "GET";
17 request.UserAgent = DefaultUserAgent;
18 if (!string.IsNullOrEmpty(userAgent))
19 {
20 request.UserAgent = userAgent;
21 }
22 if (timeout.HasValue)
23 {
24 request.Timeout = timeout.Value;
25 }
26 if (cookies != null)
27 {
28 request.CookieContainer = new CookieContainer();
29 request.CookieContainer.Add(cookies);
30 }
31 return request.GetResponse() as HttpWebResponse;
32 }
1 string userName = "userName"; 2 string tagUrl = "http://cang.baidu.com/"+userName+"/tags"; 3 CookieCollection cookies = new CookieCollection();//如何从response.Headers["Set-Cookie"];中获取并设置CookieCollection的代码略 4 response = HttpWebResponseUtility.CreateGetHttpResponse(tagUrl, null, null, cookies);
