読者です 読者をやめる 読者になる 読者になる

ikarosの作業場

C#でWindows Store Appsやったり、Phunいじったり

Windows Store Apps(C#)でTwitterを使う:第五回

では実際にStreamingAPIを使いましょう

今回は例としてGet系のStreamingAPIであるUser Streamsを使いたいと思います。
API自体の詳細はこちらUser streams | Twitter Developers

1.リクエスト送信
Twitterにリクエストを送信します。RestAPIの時とほとんど一緒です。

//すべてのパラメーターが入ったSortedDictionary型のHeaderという関数があるという設定
//signatureを含めたHeaderの作り方は前回からの流れを見てください 今回は割愛します
string posturl = "https://userstream.twitter.com/1.1/user.json?";

string authorizationHeaderParams = null;

foreach (string key in Header.Keys)
{
    posturl += key + "=" + Header[key] + "&";
    authorizationHeaderParams += key + "=\"" + Header[key] + "\", ";
}
posturl = posturl.Remove(posturl.Length - 1);
authorizationHeaderParams = authorizationHeaderParams.Remove(authorizationHeaderParams.Length - 2);

var request = new HttpRequestMessage();
var client = new HttpClient();
request.Method = HttpMethod.Get;
request.RequestUri = new Uri(posturl);
request.Headers.Authorization = new AuthenticationHeaderValue("OAuth", authorizationHeaderParams);

//ストリーミングなのでタイムアウトさせないようにします
client.Timeout = System.Threading.Timeout.InfiniteTimeSpan;

var res = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);

さてさてそしたらTwitterの方から何か事があるたびにこちらに情報が送られてきます。
あとはこちらで∞ループを用意しずっと読み込んでやるだけです

using (var sr = new StreamReader(await res.Content.ReadAsStreamAsync()))
{
      //無限ループでいつまでも読み続ける
      while (true)
      {
           // 何か処理をする
           string newer = await sr.ReadLineAsync();
           if (newer != "")
           {
               //newerには何か新しく来た情報が入っている
               //処理はこのif文の中に書き込む
           }
      }
}

とざっとこんな感じ。
なおストリーミングで流れてくるJSONの形式についてはこちらが詳しいdev.twitter.com

当サイトのソースコード及びその他の情報は個人・商用問わず自由に使っていただいてかかまいませんが、当サイトの情報が元で発生したいかなる結果・不利益については責任を負いかねますのでご了承ください