Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

サーバーと連携するWindowsストアアプリを作成する(後編)

速習 Windowsストアアプリケーション 第15回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2014/10/02 14:00

ダウンロード FacebookSdkSample.zip (1.3 MB)
ダウンロード RSSReader_000.zip (34.5 KB)
ダウンロード RSSReader_001.zip (35.0 KB)

 前回は、HttpClientクラスを利用した基本的なHTTP通信で、サーバーと連携する方法を紹介しました。HttpClientクラスは便利なクラスですが、FacebookのようなSNSとやり取りするには、SNS側の仕組みが複雑ということもあり、骨が折れます。そういう場合はFacebookに特化したライブラリなどを利用すると、簡単に連携できます。今回は上の例のようなHttpClientを使わずにRSSやSNSと連携する方法を紹介します。

目次

RSSフィードを取得する

 RSSとはブログなどの更新情報を公開する際に使われるフォーマットです。情報はXML形式で配信されます。

 例えば、CodeZineでも下図のようにページ下部にあるフッターからRSSの配信を確認することができます。

CodeZineのRSS配信
CodeZineのRSS配信

 「CodeZineのRSS配信」をクリックすると、下図のようにRSS 2.0で「新着記事」「新着コメント」「新着ブログ」といった情報を、それぞれRSS配信していることが分かります。

RSS配信の種類
RSS配信の種類

 新着記事のRSS配信URLは以下です。

HttpClientを使うと

 まずは、新着記事のRSS配信を以下のようにHttpClientで取得してみます(RSSReader_000.zip)。コードは前編で紹介したものとほぼ同じですので、解説が見たい方は前編を参照ください。

HttpClientによるRSSフィードの取得
HttpClient client = new HttpClient();

String url = "http://rss.rssad.jp/rss/codezine/new/20/index.xml";

HttpResponseMessage message;

String responseString;

try
{
    message = await client.GetAsync(url);

    responseString = await message.Content.ReadAsStringAsync();

    resultTextBlock.Text = responseString;

    // 文字列として取得しているのでここから色々加工して・・・
}
catch
{
}

 実行結果としてXML形式の文字列が取得できます。

実行結果として文字列が取得される
実行結果として文字列が取得される

 この結果のXMLを解析すればRSSデータを利用することができますが、解析する手間がかかります。

 ストアアプリではSyndicationClientクラスを用いることで、より処理を簡便化できます。

SyndicationClientクラスを用いたサンプル

 SyndicationClientクラスを用いてRSSフィードを取得するサンプルは以下です(RSSReader_001.zip)。

SyndicationClientによるRSSフィードの取得
Uri uri = new Uri("http://rss.rssad.jp/rss/codezine/new/20/index.xml");

SyndicationClient client = new SyndicationClient();

SyndicationFeed feed = await client.RetrieveFeedAsync(uri);

// 取得したアイテムをListViewに表示
this.FeedListView.DataContext = feed.Items;

 MainPage.xamlには、以下のようなListViewコントロールが配置されています。

MainPage.xaml
<Page.Resources>
  <DataTemplate x:Key="FeedDataTemplate">
    <Grid>
      <StackPanel Orientation="Vertical">
        <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Title.Text}" VerticalAlignment="Top"/>
          <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Summary.Text}" VerticalAlignment="Top" Height="40"/>
      </StackPanel>
    </Grid>
  </DataTemplate>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
  <ListView x:Name="FeedListView" HorizontalAlignment="Left" Margin="60" ItemTemplate="{StaticResource FeedDataTemplate}" ItemsSource="{Binding}"/>
</Grid>

 SyndicationClientを用いると、簡単にListViewへの表示までできてしまうことが分かります。

SyndicationClientクラス

 RSSフィードを処理するためのSyndicationClientクラスです。

SyndicationClient.RetrieveFeedAsyncメソッド

 非同期に指定されたURLのRSSフィードを取得します。

 取得したRSSフィードは、先ほどのHttpClientを用いた処理のように文字列ではなく、専用のSyndicationFeedクラスとして取得できるため、その後の処理を行いやすくなっています。

ListViewへの表示

 最後に取得したfeedを加工なしにListViewに表示しています。

 SyndicationFeedのItemsプロパティからフィードの一覧を簡単に取得できます。

RSSをListViewに表示
RSSをListViewに表示

RSSフィードの取得まとめ

 このようにRSSフィードを取得する場合は、SyndicationClientを知っていると処理が簡潔になります。

 ブログ記事の更新など、RSSフィードを取得して表示する機会も多いので、ぜひ覚えておきましょう。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 西村 誠(ニシムラ マコト)

     Microsoft MVP Windows Platform Development。  Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。  ブログ:眠るシーラカンスと水底のプログラマー  著書:基礎から学ぶ Windows...

バックナンバー

連載:速習 Windowsストアアプリケーション

もっと読む

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5