.NET的HttpWebRequest请求

默认常量

//默认UserAgent
private const string default_userAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36";

//默认请求类型
private const string default_ContentType = "application/x-www-form-urlencoded";

1.直接获取页面内容

		/// <summary>
        /// 获取当前网页的内容
        /// </summary>
        /// <param name="httpUrl">Url地址</param>
        /// <param name="timeOut">请求响应超时时间,单位秒,默认30s</param>
        /// <param name="encoding">编码方式</param>
        /// <param name="userAgent">HTTP User-agent值</param>
        /// <param name="cookies">发送Cookie信息,常用于身份验证</param>
        /// <param name="isProxy">是否使用代理</param>
        /// <returns></returns>
        public static string GetUrlString(string httpUrl, int timeOut = 30, Encoding encoding = null, string userAgent = default_userAgent, CookieCollection cookies = null, bool isProxy=false)
        {
            string result = "";

            try
            {
                encoding = encoding ?? Encoding.UTF8;

                HttpWebRequest request = WebRequest.Create(httpUrl) as HttpWebRequest;
                request.UserAgent = userAgent;
                request.Timeout = timeOut * 1000;
                //发送Cookie信息
                if (cookies != null)
                {
                    request.CookieContainer = new CookieContainer();
                    request.CookieContainer.Add(cookies);
                }
                //设置代理 
                if (isProxy)
                {
                    WebProxy proxyObject = new WebProxy("ip", 端口号);
                    proxyObject.Credentials = new NetworkCredential("代理账号", "代理账号密码");
                    request.Proxy = proxyObject; 
                }

                //获取响应内容
                using (WebResponse wr = request.GetResponse())
                {
                    //在这里对接收到的页面内容进行处理
                    using (StreamReader reader = new StreamReader(wr.GetResponseStream(), encoding))
                    {
                        result = reader.ReadToEnd();
                    }
                }
            }
            catch (Exception ex)
            {
                //日志记录代码省略
            }

            return result;
        }

2.获取post请求后返回的内容

		/// <summary>
        /// 获取Post提交数据后返回的字符串
        /// </summary>
        /// <param name="httpUrl">Url地址</param>
        /// <param name="dataStr">Post数据</param>
        /// <param name="timeOut">请求响应超时时间,单位秒,默认30s</param>
        /// <param name="encoding">编码方式</param>
        /// <param name="userAgent">HTTP User-agent值</param>
        /// <param name="cookies">发送Cookie信息,常用于身份验证</param>
        /// <returns></returns>
        public static string PostUrlString(string httpUrl, string dataStr, int timeOut = 30, Encoding encoding = null,string ContentType= default_ContentType, string userAgent = default_userAgent, CookieCollection cookies = null, bool isProxy = false)
        {
            string result = "";

            try
            {
                encoding = encoding ?? Encoding.UTF8;

                HttpWebRequest request = WebRequest.Create(httpUrl) as HttpWebRequest;
                request.Method = "POST";
                request.ContentType = ContentType;
                request.UserAgent = userAgent;
                request.Timeout = timeOut * 1000;
                //发送Cookie信息
                if (cookies != null)
                {
                    request.CookieContainer = new CookieContainer();
                    request.CookieContainer.Add(cookies);
                }
                //设置代理 
                if (isProxy)
                {
                    WebProxy proxyObject = new WebProxy("ip", 端口);
                    proxyObject.Credentials = new NetworkCredential("代理账号", "代理密码");
                    request.Proxy = proxyObject;
                }

                //发送提交内容
                byte[] data = encoding.GetBytes(dataStr);
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
                //获取响应内容
                using (WebResponse wr = request.GetResponse())
                {
                    //在这里对接收到的页面内容进行处理
                    using (StreamReader reader = new StreamReader(wr.GetResponseStream(), encoding))
                    {
                        result = reader.ReadToEnd();
                    }
                }
            }
            catch (Exception ex)
            {
                //日志记录
            }

            return result;
        }

3.下载指定文件的字节流

		/// <summary>
        /// 下载指定文件的字节流
        /// </summary>
        /// <param name="httpUrl">下载文件的地址</param>
        /// <param name="timeOut">下载文件超时时间,单位秒,默认60s</param>
        /// <param name="userAgent">HTTP User-agent值</param>
        /// <param name="cookies">发送Cookie信息,常用于身份验证</param>
        /// <returns></returns>
        public static Byte[] GetUrlByte(string httpUrl, int timeOut = 60, string userAgent = "", CookieCollection cookies = null)
        {
            try
            {
                HttpWebRequest request = WebRequest.Create(httpUrl) as HttpWebRequest;
                request.UserAgent = userAgent;
                request.Timeout = timeOut * 1000;
                //发送Cookie信息
                if (cookies != null)
                {
                    request.CookieContainer = new CookieContainer();
                    request.CookieContainer.Add(cookies);
                }
                //获取响应内容流
                using (WebResponse wr = request.GetResponse())
                {
                    using (Stream reader = wr.GetResponseStream())
                    {
                        int tempByte;
                        var tempStream = new MemoryStream();
                        while ((tempByte = reader.ReadByte()) != -1)
                        {
                            tempStream.WriteByte(((byte)tempByte));
                        }
                        return tempStream.ToArray();
                        //return reader.ToByte();
                    }
                }
            }
            catch (Exception ex)
            {
                //日志记录
            }

            return null;
        }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迪士尼在逃码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值