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を使って何かアプリを作りたい、と思っている方、是非お試しを