[英]using the HttpClient, how can I cleanly read and de-serialize an RSS feed?
我正在使用NuGet上可用的HttpClient 。
這是我開始的代碼:
string url = "http://example.com/rssfeed.rss";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.UserAgent.Clear();
client.DefaultRequestHeaders.Add("User-Agent", "CheesoTest");
var task = client.GetAsync(url);
try
{
task.Wait();
HttpResponseMessage resp = task.Result;
var t2 = resp.Content.ReadAsAsync<RSS.Feed>();
t2.Wait();
var result = t2.Result;
}
catch (Exception e1)
{
MessageBox.Show("Exception: " + e1.ToString());
}
問題:
我必須明確定義RSS.Feed
並使用DataContract / DataMember屬性對其進行修飾。 似乎應該內置一個RSS類。是嗎? (也許我只是不知道)
這會失敗,並會出現一個異常,抱怨RSS提要中的處理指令。 它實際上是一個樣式表,我不在乎。 我只想要數據。
例外是:
異常:System.AggregateException:發生一個或多個錯誤。 ---> System.InvalidOperationException:XML文檔(1、2)中存在錯誤。 ---> System.Xml.XmlException:不支持處理指令(除了XML聲明)和DTD。 第1行,位置2。
提要看起來像:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0">
<channel><title>blah foo fizz bang</title>....
有任何更好的方法提示嗎? 使用HttpClient!
我發現文檔有些薄。
另外,您是否看過WCF的SyndicationFeed? System.ServiceModel.dll具有SyndicationFeed.Load(XmlReader)方法,可以將提要反序列化為SyndicationFeed對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.