Windows 8 ストアアプリ - 非同期なWebアクセスコーディング

WinRT APIでは非同期が導入されました。それに伴い、ファイルやネットアクセスなど時間がかかる処理は大抵の場合、メソッド名の最後にAsyncがついた、非同期メソッドになっています。

このポストでは、RESTなどで提供されているWebサービスへのアクセス方法を紹介します。例として、Twitterのアカウントのフォロワー情報を得るケース(今後OAuth認証が必要になりますが、2012年10月時点で許されている形式で紹介しますね)では、

https://api.twitter.com/1/statuses/followers/

 というURLを要求すると、(太字の部分は調べたいTwitterアカウントのuser_name)、XML形式で該当するTwitterアカウントのフォロワーの最初の100人分がXMLで返ってきます。

これをWindows 8 ストアアプリで実行するには、System.Net名前空間のWebRequest、WebResponseを使います。

    var followerUri = new Uri("https://api.twitter.com/1/statuses/followers/" + target + ".xml?" + "cursor=" + cursor);
    WebRequest twitterReq = WebRequest.Create(followerUri);
    try
    {
        var twitterRes = await twitterReq.GetResponseAsync();
        using (var stream = twitterRes.GetResponseStream())
        {
            …
        }
    }
    catch (Exception ex)
    {
        …
    }

WebRequest.Createメソッドを使って、リクエストインスタンスを作るのは、従来通りです。リクエストからレスポンスを取り出すには、上のアンダーラインを引いたような形式で書いて、WebResponseインスタンス(twitterRes)を取り出します。
twitterResを取れれば、後はGetResponseStream()メソッドをコールして、ストリームを取り出し、データを操作することができます。もちろん、Headersプロパティから応答ヘッダーの内容も参照可能です。

ネット上で公開されているREST APIを使って何かアプリを作りたい、と思っている方、是非お試しを