1

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

問題:

  1. RSS.FeedDataContract/DataMember属性で明示的に定義して装飾する必要がありました。RSSクラスを組み込む必要があるようです。そうですか?(たぶん私はそれについて知らないだけです)

  2. これは、RSSフィードの処理命令について不平を言う例外で失敗します。それは実際には私が気にしないスタイルシートです。データが欲しいだけです。

例外は次のとおりです。

例外:System.AggregateException:1つ以上のエラーが発生しました。---> 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を使用する!!

ドキュメントが少し薄いことがわかりました。

4

1 に答える 1

0

または、WCF の SyndicationFeed を調べましたか? System.ServiceModel.dll には、フィードを SyndicationFeed オブジェクトに逆シリアル化できるSyndicationFeed.Load(XmlReader)メソッドがあります。

于 2012-10-04T20:22:24.490 に答える