【问题标题】:using the HttpClient, how can I cleanly read and de-serialize an RSS feed?使用 HttpClient,我怎样才能干净地读取和反序列化 RSS 提要?
【发布时间】:2012-07-25 05:00:53
【问题描述】:

我正在使用the HttpClient that is available on NuGet

这是我开始的代码:

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());
}

问题:

  1. 我必须明确定义 RSS.Feed 并使用 DataContract/DataMember 属性对其进行装饰。看起来确实应该内置一个 RSS 类。是吗? (也许我只是不知道)

  2. 此操作失败,并出现异常,抱怨 RSS 提要中的处理指令。它实际上是一个样式表,我不在乎。我只想要数据。

例外是:

异常:System.AggregateException:发生一个或多个错误。 ---> System.InvalidOperationException: XML 文档 (1, 2) 中存在错误。 ---> System.Xml.XmlException:不支持处理指令(XML 声明除外)和 DTD。第 1 行,位置 2。

Feed 看起来像:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0">
   <channel><title>blah foo fizz bang</title>....

关于更好的方法的任何提示?使用 HttpClient!!

我发现文档有点薄。

【问题讨论】:

    标签: c# .net rss asp.net-web-api dotnet-httpclient


    【解决方案1】:

    另外,您是否查看过 WCF 的 SyndicationFeed? System.ServiceModel.dll 有一个SyndicationFeed.Load(XmlReader) 方法,可以将提要反序列化为 SyndicationFeed 对象。

    【讨论】:

      猜你喜欢
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      相关资源
      最近更新 更多