我正在使用the HttpClient that is available on NuGet。使用HttpClient,我該如何幹淨地讀取和反序列化RSS提要?
這是我開始的代碼:
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!
我發現文檔有點薄。