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();
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);
你永远不懂我伤悲、就好像白天不懂夜的黑··