我需要帮助从Facebook页面提取RSS提要我正在使用以下代码,但它一直给我一个错误:
string url = "https://www.facebook.com/Feeds/page.PHP?id=40796308305&format=RSS20"; XmlReaderSettings settings = new XmlReaderSettings { XmlResolver = null,DtdProcessing=DtdProcessing.Parse,}; XmlReader reader = XmlReader.Create(url,settings); SyndicationFeed Feed = SyndicationFeed.Load(reader); foreach (var item in Feed.Items) { Console.WriteLine(item.Id); Console.WriteLine(item.Title.Text); Console.WriteLine(item.Summary.Text); } if (reader != null) reader.Close();
此代码与任何博客或页面RSS完美配合,但使用Facebook RSS时,它会给出以下消息的异常
The element with name ‘html’ and namespace ‘http://www.w3.org/1999/xhtml’ is not an allowed Feed format.
谢谢
解决方法
Facebook将在此实例中返回HTML,因为它不喜欢XmlReader提供的用户代理.由于您无法自定义它,因此您需要一个不同的解决方案来获取Feed.这应该可以解决您的问题:
var req = (HttpWebRequest)WebRequest.Create(url); req.Method = "GET"; req.UserAgent = "fiddler"; var rep = req.GetResponse(); var reader = XmlReader.Create(rep.GetResponseStream()); SyndicationFeed Feed = SyndicationFeed.Load(reader);
这完全是Facebook的一种行为,但建议的更改应该同样适用于您当前实施可以接受的其他网站.
原文地址:https://www.jb51.cc/csharp/95597.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。