您的位置:首页 > 理论基础 > 计算机网络

这个类获取全部信息HttpWebRequest

2017-02-17 15:48 471 查看
转自其他一些人的,自己改了下。本来是想获得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);
}

}


4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: