这个类获取全部信息HttpWebRequest

转自其他一些人的,自己改了下。本来是想获得xml信息的。编码问题没解决。索性把获得全部信息的代码先保留着。

class ReadFeed
    {

        private string _url;
        //private System.DateTime _lastModified;
       // private System.DateTime _lastRssDate;

        //private Channel channel = new Channel();
        #region 公共属性
        public string url
        {
            get { return _url; }
            set { _url = value; }
        }
       /* public System.DateTime lastModified
        {
            get { return _lastModified; }
        }
        public System.DateTime lstRssDate
        {
            set { _lastRssDate = value; }
        }
        // public Channel Channel
        // {
        //     get { return channel; }
        // }*/
        #endregion


        public ReadFeed()
        {
        }

        public ReadFeed(string url, System.DateTime dt)
        {
            this._url = url;
            //this._lastRssDate = dt;

        }

        //public void Read()
        public string Read()
        {
            int timeOut = 5000;
            string value = string.Empty;
            System.Net.HttpWebResponse response = null;
            Stream data = null;
            StreamReader sr = null;
            try
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(_url);
                request.Method = "GET";
                request.ServicePoint.Expect100Continue = false;
                //是否使用 Nagle 不使用 提高效率
                request.ServicePoint.UseNagleAlgorithm = false;
                //最大连接数
                request.ServicePoint.ConnectionLimit = 65500;
                //数据是否缓冲 false 提高效率
                request.AllowWriteStreamBuffering = false;
                request.UserAgent = @"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.40607; .NET CLR 1.1.4322)";
                request.KeepAlive = true;
                request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
                request.Headers.Add("Accept-Charset", "GBK,utf-8;q=0.7,*;q=0.3");
                request.Headers.Add("Accept-Encoding:gzip,deflate,sdch");
                request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
                request.Headers.Add("Cache-Control", "max-age=0");

                if (timeOut != -1) request.Timeout = timeOut;
                response = (HttpWebResponse)request.GetResponse();
                data = response.GetResponseStream();
                //sr = new StreamReader(data);
                if (Get_CH(response.Headers["Content-Type"].ToString())=="GBK")
                {
                    //MessageBox.Show(Get_CH(response.Headers["Content-Type"].ToString()));

                    sr = new StreamReader(data, System.Text.Encoding.GetEncoding("GB2312"));
                    // xDoc.Load(sr);

                }
                else
                {
                    MessageBox.Show(Get_CH(response.Headers.ToString()));
                    sr = new StreamReader(data, System.Text.Encoding.UTF8);
                    // xDoc.Load(stream);


                }


                string str;
                StringBuilder source = new StringBuilder();
                while ((str = sr.ReadLine()) != null)
                    source.Append(str).Append("\r\n");
                value = source.ToString();
            }
            catch (WebException e)
            {
                MessageBox.Show(e.Message);
            }
            finally
            {
                if (sr != null) sr.Close();
                if (data != null) data.Close();
                if (response != null) response.Close();
            }
            return value;
            //wan



            /*            if(this._lastRssDate<this._lastModified)
            {
                XmlNodeList xnList=xDoc.DocumentElement["channel"].SelectNodes("item");
                //                XmlNodeList xnList=xDoc.SelectNodes("items");
                int a= xnList.Count;
                foreach(XmlNode xNode in xnList)
                {                
                    Item rt=new Item();
                    rt.title=xNode.SelectSingleNode("title").InnerText.Replace("'","''");
                    rt.link=xNode.SelectSingleNode("link").InnerText.Replace("'","''");
                    rt.description=xNode.SelectSingleNode("description").InnerText.Replace("'","''");
                    try
                    {
                        rt.pubDate=xNode.SelectSingleNode("pubDate").InnerText;
                    }
                    catch
                    {
                        rt.pubDate=this._lastModified.ToString();
                    }
                    channel.Items.Add(rt);
                }
            }*/

        }//read

        public string Create()
        {
            return "";
        }

        private string Get_CH(string s)
        {
            int l = s.IndexOf("charset=") + 8;
            return s.Substring(l, s.Length - l);
        }



    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值