C# HttpWebRequest Post Get 请求数据

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();  
复制代码
View Code
复制代码
 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"]; 
复制代码
View Code

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        } 
复制代码
View Code
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);  
原文地址:https://www.cnblogs.com/XYDsoft/p/9465661.html