检查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。 使用它你可以阅读这个问题的答案。

Interesting Posts