Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143880
  • 博文数量: 48
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 630
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-03 20:57
文章分类

全部博文(48)

文章存档

2010年(4)

2009年(23)

2008年(21)

我的朋友

分类:

2009-05-07 10:20:35

(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被限制只能用某些浏览器读取,像是FirefoxIE。所以在发出读取RSS的要求时,要记得把你的request伪装一下伪装Firefox或是IEUserAgent字符串。也就是像这样的字符串。

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) |
给主人留下些什么吧!~~