• 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);  
  • 相关阅读:
    apache 访问出现403 Forbidden
    linux下用Apache一个IP多个域名建虚拟主机
    利用xargs 可以一次性卸载到位
    linux安装包地址备忘
    ii7安装php
    基于jQuery的对象切换插件:soChange 1.5 (点击下载)
    phpMyAdmin 缺少 mysqli 扩展。请检查 PHP 配置
    Android中的自动朗读(TTS)
    Android中的手势
    Android中的SQLiteOpenHelper类
  • 原文地址:https://www.cnblogs.com/qifei-jia/p/8065194.html
Copyright © 2020-2023  润新知