(1)取得RSS资料
首先,建立一个GetRss function,这个函数会回传一个包含RSS数据的XmlDocument对象。
public XmlDocument GetRss(string rsslink) { String userAgent = @"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";//伪装成Firefox或是IE的UserAgent字符串。
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(rsslink);
httpRequest.UserAgent = userAgent;
HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(httpResponse.GetResponseStream());
httpResponse.Close();
return xmlDoc; }
|
这个函数透过HttpWebRequest类别对指定的Url发出request,取得Server传回的response后,存入HttpWebResponse类别的对象中。接着透过HttpWebResponse类别的GetResponseStream方法取得XML资料让XmlDocument可以加载这些数据。
在这里要注意关于UserAgent的部份,UserAgent是一种用来辨识浏览器的一段标识符串。有些RSS来源,像是feedburner有时候会出现404-Not Found的问题,这个时候可能就是UserAgent的问题了,可能是有些RSS被限制只能用某些浏览器读取,像是Firefox或IE。所以在发出读取RSS的要求时,要记得把你的request伪装一下,伪装成Firefox或是IE的UserAgent字符串。也就是像这样的字符串。
String userAgent = @"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
public string getRssDetail(string url) { System.Text.StringBuilder newsb = new System.Text.StringBuilder("");
try { XmlDocument rssDoc=GetRss(url); System.Xml.XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item");
string title = ""; string link = ""; string description = "";
for (int i = 0; i < rssItems.Count; i++) { System.Xml.XmlNode rssDetail;
rssDetail = rssItems[i].SelectSingleNode("title"); if (rssDetail != null) title = rssDetail.InnerText;
rssDetail = rssItems[i].SelectSingleNode("link"); if (rssDetail != null) link = rssDetail.InnerText;
rssDetail = rssItems[i].SelectSingleNode("description"); if (rssDetail != null) description = rssDetail.InnerText;
//newsb.Append("" + title + " \r[ 详细 ] \r");
newsb.Append(" + link + "\">" + title + "
\r\n" + description + " \r\n"); } //myResponse.Close();
} catch { return ""; } return newsb.ToString(); }
|
阅读(806) | 评论(0) | 转发(0) |