检查url是否为有效Feed
我正在使用Argotic Syndication Framework来处理Feed。
但问题是,如果我将URL传递给Argotic,这不是一个有效的订阅源(例如, http://stackoverflow.com
//stackoverflow.com这是一个html页面,而不是feed),程序会挂起(我的意思是,Argotic留在无限循环)
那么,如何检查URL是否指向有效的Feed?
从.NET 3.5开始,您可以在下面执行此操作。 如果它不是有效的Feed,它将抛出exception。
using System.Diagnostics; using System.ServiceModel.Syndication; using System.Xml; public bool TryParseFeed(string url) { try { SyndicationFeed feed = SyndicationFeed.Load(XmlReader.Create(url)); foreach (SyndicationItem item in feed.Items) { Debug.Print(item.Title.Text); } return true; } catch (Exception) { return false; } }
或者您可以尝试自己解析文档:
string xml = "\nThis is a Test "; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xml);
然后尝试检查根元素。 它应该是feed元素并具有“ http://www.w3.org/2005/Atom ”命名空间:
参考文献: http : //msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed.aspx http://dotnet.dzone.com/articles/systemservicemodelsyndication
您可以使用Feedvalidation服务 。 它有SOAP API 。
您可以检查内容类型。 它必须是text/xml
。 请参阅此问题以查找内容类型。
你可以使用这段代码:
var request = HttpWebRequest.Create("http://www.google.com") as HttpWebRequest; if (request != null) { var response = request.GetResponse() as HttpWebResponse; string contentType = ""; if (response != null) contentType = response.ContentType; }
感谢问题的答案
更新
要检查它是否是Feed地址,您可以使用W3C Feedvalidation服务。
UPDATE2
正如BurundukXP所说,它有一个SOAP API。 使用它你可以阅读这个问题的答案。