LoginSignup
1
0

More than 5 years have passed since last update.

DotNetOpenAuth で Streaming

Last updated at Posted at 2012-12-26

以外と情報の少ない DotNetOpenAuth で Streaming してみました。

//  http://wiki.dobon.net/index.php?.NET%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%A6%B5%E6%2F96#x1d31ba1
//  がオリジナル。

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Xml.Linq;
using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.OAuth;
using DotNetOpenAuth.OAuth.ChannelElements;

partial class TwitterConsumer {
public static void streaming(ConsumerBase consumer, string accessToken) {
    HttpWebRequest req;

    #region DotNetOpenAuth っぽいところ
    MessageReceivingEndpoint endpoint = new MessageReceivingEndpoint(
        "https://userstream.twitter.com/2/user.json",
        HttpDeliveryMethods.PostRequest | HttpDeliveryMethods.AuthorizationHeaderRequest);

    var extraData = new Dictionary<string, string>();
    //if (option != null) {
    //    option.FillExtraData(ref extraData);
    //}
    req = consumer.PrepareAuthorizedRequest(endpoint, accessToken, extraData);
    #endregion

    //サーバーからの応答を受信するためのHttpWebResponseを取得する
    HttpWebResponse res = (HttpWebResponse)req.GetResponse();   //  throws WebException.

    //応答データを受信するためのStreamを取得する
    Stream st = res.GetResponseStream();
    StreamReader sr = new StreamReader(st);

    //10秒間だけデータを取得する
    DateTime startTime = DateTime.Now;
    while ((DateTime.Now - startTime).TotalSeconds < 30) {
        Debug.WriteLine(sr.ReadLine());
    }

    //こちらから接続を閉じる
    req.Abort();
    res.Close();
    sr.Close();

    Debug.WriteLine("----- 終了しました! -----");
}
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0