DoboWiki
Top
> .NETプログラミング研究/97 をテンプレートにして作成
.NETプログラミング研究/97 をテンプレートにして作成
開始行:
#title(Twitter Streaming APIを使う 2)
#navi(.NETプログラミング研究)
#contents
*Twitter Streaming APIを使う 2 [#sb640823]
[[前回>../96]]に続いて、Twitter Streaming APIです。前回も...
**statuses/filterメソッドを使う [#kd0c99e7]
statuses/filterメソッドを使用すると、指定したキーワードを...
「[[Streaming API>http://apiwiki.twitter.com/Streaming-AP...
***trackパラメータ [#sae4aba1]
キーワードを指定するには、trackパラメータを使います。キー...
例えば「Twitter」をtrackパラメータに指定したときは、text...
trackパラメータに複数のキーワードを指定する場合は、それぞ...
***followパラメータ [#x97c71a5]
ユーザーを指定するには、followパラメータを使います。follo...
followパラメータもtrackパラメータと同様に、コンマ区切りで...
***locationsパラメータ [#e133dcf3]
指定した場所から投稿されたステータスだけを送ってもらうに...
locationsパラメータもコンマ区切りで複数指定可能で、例えば...
trackとlocationsパラメータは、あまりに広い範囲を指定する...
なおtrackとlocationsパラメータの両方を指定すると、どちら...
***サンプルコード [#h873005a]
以下の例では、「2010wc」というキーワードを含むステータス...
#code(vbnet){{
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.Xml
Module TwitterStreamingApiTest
Sub Main()
'HttpWebRequestを作成する
Dim webreq As HttpWebRequest = DirectCast(System....
"http://stream.twitter.com/1/statuses/filter....
'ユーザー名とパスワードを設定する
Dim nc As New NetworkCredential("username", "pass...
webreq.Credentials = nc
'POSTとしてデータを送信する
webreq.Method = "POST"
webreq.ContentType = "application/x-www-form-urle...
'417 Expectation Failed が返されないように
webreq.ServicePoint.Expect100Continue = False
'trackパラメータを指定する
Dim postStr As String = "track=2010wc"
Dim postData As Byte() = Encoding.UTF8.GetBytes(p...
webreq.ContentLength = postData.Length
'データを送信する
Dim reqStrm As Stream = webreq.GetRequestStream()
reqStrm.Write(postData, 0, postData.Length)
reqStrm.Close()
'サーバーからの応答を受信するためのHttpWebRespons...
Dim webres As HttpWebResponse = DirectCast(webreq...
'応答データを受信するためのStreamを取得する
Dim st As Stream = webres.GetResponseStream()
Dim sr As New StreamReader(st)
'XMLを切り出すための正規表現
Dim xmlReg As New Regex( _
"<\?xml\s[^>]+>\s*<(?<root>[^\s>]+)[^>]*>(?:....
RegexOptions.Singleline Or RegexOptions.Compi...
'一時的にデータを保存しておくバッファ
Dim buffer As New StringBuilder()
'10秒間だけデータを取得する
Dim startTime As DateTime = DateTime.Now
While (DateTime.Now - startTime).TotalSeconds < 10
Dim line As String = sr.ReadLine()
If line Is Nothing Then
Exit While
End If
If line = "" Then
Continue While
End If
'バッファに追加
buffer.AppendLine(line)
'正規表現と一致するか調べる
Dim m As Match = xmlReg.Match(buffer.ToString...
If m.Success Then
'XmlDocumentに読み込む
Dim xmlDoc As New XmlDocument()
xmlDoc.LoadXml(m.Value)
'ルートを取得
Dim rootElm As XmlElement = xmlDoc.Docume...
'情報の表示
If rootElm.Name = "status" Then
'statusの情報(textとuserのscreen_nam...
Console.WriteLine("[{1}] {0}", _
rootElm("text").InnerText, _
rootElm("user")("screen_name").In...
End If
'バッファをクリア
buffer.Length = 0
End If
End While
'こちらから接続を閉じる
webreq.Abort()
webres.Close()
sr.Close()
Console.WriteLine("----- 終了しました! -----")
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
class TwitterStreamingApiTest
{
static void Main()
{
//HttpWebRequestを作成する
HttpWebRequest webreq = (HttpWebRequest)System.Ne...
"http://stream.twitter.com/1/statuses/filter....
//ユーザー名とパスワードを設定する
NetworkCredential nc = new NetworkCredential("use...
webreq.Credentials = nc;
//POSTとしてデータを送信する
webreq.Method = "POST";
webreq.ContentType = "application/x-www-form-urle...
//417 Expectation Failed が返されないように
webreq.ServicePoint.Expect100Continue = false;
//trackパラメータを指定する
string postStr = "track=2010wc";
byte[] postData = Encoding.UTF8.GetBytes(postStr);
webreq.ContentLength = postData.Length;
//データを送信する
Stream reqStrm = webreq.GetRequestStream();
reqStrm.Write(postData, 0, postData.Length);
reqStrm.Close();
//サーバーからの応答を受信するためのHttpWebRespon...
HttpWebResponse webres = (HttpWebResponse)webreq....
//応答データを受信するためのStreamを取得する
Stream st = webres.GetResponseStream();
StreamReader sr = new StreamReader(st);
//XMLを切り出すための正規表現
Regex xmlReg = new Regex(
@"<\?xml\s[^>]+>\s*<(?<root>[^\s>]+)[^>]*>(?:...
RegexOptions.Singleline | RegexOptions.Compil...
//一時的にデータを保存しておくバッファ
StringBuilder buffer = new StringBuilder();
//10秒間だけデータを取得する
DateTime startTime = DateTime.Now;
while ((DateTime.Now - startTime).TotalSeconds < ...
{
string line = sr.ReadLine();
if (line == null)
break;
if (line == "")
continue;
//バッファに追加
buffer.AppendLine(line);
//正規表現と一致するか調べる
Match m = xmlReg.Match(buffer.ToString());
if (m.Success)
{
//XmlDocumentに読み込む
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(m.Value);
//ルートを取得
XmlElement rootElm = xmlDoc.DocumentEleme...
//情報の表示
if (rootElm.Name == "status")
{
//statusの情報(textとuserのscreen_na...
Console.WriteLine("[{1}] {0}",
rootElm["text"].InnerText,
rootElm["user"]["screen_name"].In...
}
//バッファをクリア
buffer.Length = 0;
}
}
//こちらから接続を閉じる
webreq.Abort();
webres.Close();
sr.Close();
Console.WriteLine("----- 終了しました! -----");
Console.ReadLine();
}
}
}}
**JSONを解析する [#b3cb866c]
[[Twitter Streaming APIのドキュメント>http://apiwiki.twit...
.NET FrameworkでJSONを解析するとなると、.NET Framework 3....
***JavaScriptSerializerを使う [#l6cce571]
以下に、JavaScriptSerializerを使用した例を示します。この...
#code(vbnet){{
Imports System.IO
Imports System.Net
Imports System.Collections.Generic
Module TwitterStreamingApiTest
Sub Main()
'HttpWebRequestの作成
Dim webreq As HttpWebRequest = DirectCast(System....
"http://stream.twitter.com/1/statuses/sample....
Dim nc As New NetworkCredential("username", "pass...
webreq.Credentials = nc
'サーバーからの応答を受信するためのHttpWebRespons...
Dim webres As HttpWebResponse = DirectCast(webreq...
'応答データを受信するためのStreamを取得
Dim st As Stream = webres.GetResponseStream()
Dim sr As New StreamReader(st)
Dim startTime As DateTime = DateTime.Now
While (DateTime.Now - startTime).TotalSeconds < 10
Dim line As String = sr.ReadLine()
If line Is Nothing Then
Exit While
End If
If line = "" Then
Continue While
End If
'JSONのデータをDictionaryに変換する
Dim serializer As New System.Web.Script.Seria...
Dim status As Dictionary(Of String, Object) = _
serializer.Deserialize(Of Dictionary(Of S...
If status.ContainsKey("text") Then
'"text"があればstatusと判断する
Dim user As Dictionary(Of String, Object)...
DirectCast(status("user"), Dictionary...
Console.WriteLine("[{1}] {0}", status("te...
ElseIf status.ContainsKey("delete") Then
Console.WriteLine("[DELETE]")
End If
End While
'閉じる
webreq.Abort()
webres.Close()
sr.Close()
Console.WriteLine("----- 終了しました! -----")
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
using System;
using System.IO;
using System.Net;
using System.Collections.Generic;
class TwitterStreamingApiTest
{
static void Main()
{
//HttpWebRequestの作成
HttpWebRequest webreq = (HttpWebRequest)System.Ne...
"http://stream.twitter.com/1/statuses/sample....
NetworkCredential nc = new NetworkCredential("use...
webreq.Credentials = nc;
//サーバーからの応答を受信するためのHttpWebRespon...
HttpWebResponse webres = (HttpWebResponse)webreq....
//応答データを受信するためのStreamを取得
Stream st = webres.GetResponseStream();
StreamReader sr = new StreamReader(st);
DateTime startTime = DateTime.Now;
while ((DateTime.Now - startTime).TotalSeconds < ...
{
string line = sr.ReadLine();
if (line == null)
break;
if (line == "")
continue;
//JSONのデータをDictionaryに変換する
System.Web.Script.Serialization.JavaScriptSer...
new System.Web.Script.Serialization.JavaS...
Dictionary<string, object> status =
serializer.Deserialize<Dictionary<string,...
if (status.ContainsKey("text"))
{
//"text"があればstatusと判断する
Dictionary<string, object> user =
(Dictionary<string, object>)status["u...
Console.WriteLine("[{1}] {0}", status["te...
}
else if (status.ContainsKey("delete"))
{
Console.WriteLine("[DELETE]");
}
}
//閉じる
webreq.Abort();
webres.Close();
sr.Close();
Console.WriteLine("----- 終了しました! -----");
Console.ReadLine();
}
}
}}
***Json.NETを使う [#xc8e0128]
JSONを扱うフリーのライブラリとしては、[[Json.NET>http://j...
以下にJson.NETのLINQ to JSONを使った例を紹介します。なお....
#code(vbnet){{
Imports System.IO
Imports System.Net
Module TwitterStreamingApiTest
Sub Main()
'HttpWebRequestの作成
Dim webreq As HttpWebRequest = DirectCast(System....
"http://stream.twitter.com/1/statuses/sample....
Dim nc As New NetworkCredential("username", "pass...
webreq.Credentials = nc
'サーバーからの応答を受信するためのHttpWebRespons...
Dim webres As HttpWebResponse = DirectCast(webreq...
'応答データを受信するためのStreamを取得
Dim st As Stream = webres.GetResponseStream()
Dim sr As New StreamReader(st)
Dim startTime As DateTime = DateTime.Now
While (DateTime.Now - startTime).TotalSeconds < 10
Dim line As String = sr.ReadLine()
If line Is Nothing Then
Exit While
End If
If line = "" Then
Continue While
End If
'JSONをParse
Dim json As Newtonsoft.Json.Linq.JObject = _
Newtonsoft.Json.Linq.JObject.Parse(line)
Dim token As Newtonsoft.Json.Linq.JToken = No...
If json.TryGetValue("text", token) Then
'"text"があればstatusと判断する
'Stringにキャストしないと、前後に"が入る
Console.WriteLine("[{1}] {0}", _
CType(json("text"), String), _
CType(json("user")("name"), String))
ElseIf json.TryGetValue("delete", token) Then
Console.WriteLine("[DELETE] {0}", json("d...
End If
End While
'閉じる
webreq.Abort()
webres.Close()
sr.Close()
Console.WriteLine("----- 終了しました! -----")
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
using System;
using System.IO;
using System.Net;
class TwitterStreamingApiTest
{
static void Main()
{
//HttpWebRequestの作成
HttpWebRequest webreq = (HttpWebRequest)System.Ne...
"http://stream.twitter.com/1/statuses/sample....
NetworkCredential nc = new NetworkCredential("use...
webreq.Credentials = nc;
//サーバーからの応答を受信するためのHttpWebRespon...
HttpWebResponse webres = (HttpWebResponse)webreq....
//応答データを受信するためのStreamを取得
Stream st = webres.GetResponseStream();
StreamReader sr = new StreamReader(st);
DateTime startTime = DateTime.Now;
while ((DateTime.Now - startTime).TotalSeconds < ...
{
string line = sr.ReadLine();
if (line == null)
break;
if (line == "")
continue;
//JSONをParse
Newtonsoft.Json.Linq.JObject json = Newtonsof...
Newtonsoft.Json.Linq.JToken token;
if (json.TryGetValue("text", out token))
{
//"text"があればstatusと判断する
//Stringにキャストしないと、前後に"が入る
Console.WriteLine("[{1}] {0}",
(string)json["text"], (string)json["u...
}
else if (json.TryGetValue("delete", out token))
{
Console.WriteLine("[DELETE] {0}", json["d...
}
}
//閉じる
webreq.Abort();
webres.Close();
sr.Close();
Console.WriteLine("----- 終了しました! -----");
Console.ReadLine();
}
}
}}
***補足 : .NET Framework 1.1以前の場合 [#v504b851]
[[JSON>http://json.org/json-ja.html]]で紹介されているC#の...
JSON.csの277行にある
#code(csharp){{
s.Append(Char.ConvertFromUtf32((int)codePoint));
}}
を
#code(csharp){{
s.Append(Encoding.UTF32.GetString(BitConverter.GetBytes(c...
}}
に変更することで、このエラーは出なくなりました。
**コメント [#zfa79d0f]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2010-06-21 (月) 01:23:58,DOB...
終了行:
#title(Twitter Streaming APIを使う 2)
#navi(.NETプログラミング研究)
#contents
*Twitter Streaming APIを使う 2 [#sb640823]
[[前回>../96]]に続いて、Twitter Streaming APIです。前回も...
**statuses/filterメソッドを使う [#kd0c99e7]
statuses/filterメソッドを使用すると、指定したキーワードを...
「[[Streaming API>http://apiwiki.twitter.com/Streaming-AP...
***trackパラメータ [#sae4aba1]
キーワードを指定するには、trackパラメータを使います。キー...
例えば「Twitter」をtrackパラメータに指定したときは、text...
trackパラメータに複数のキーワードを指定する場合は、それぞ...
***followパラメータ [#x97c71a5]
ユーザーを指定するには、followパラメータを使います。follo...
followパラメータもtrackパラメータと同様に、コンマ区切りで...
***locationsパラメータ [#e133dcf3]
指定した場所から投稿されたステータスだけを送ってもらうに...
locationsパラメータもコンマ区切りで複数指定可能で、例えば...
trackとlocationsパラメータは、あまりに広い範囲を指定する...
なおtrackとlocationsパラメータの両方を指定すると、どちら...
***サンプルコード [#h873005a]
以下の例では、「2010wc」というキーワードを含むステータス...
#code(vbnet){{
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.Xml
Module TwitterStreamingApiTest
Sub Main()
'HttpWebRequestを作成する
Dim webreq As HttpWebRequest = DirectCast(System....
"http://stream.twitter.com/1/statuses/filter....
'ユーザー名とパスワードを設定する
Dim nc As New NetworkCredential("username", "pass...
webreq.Credentials = nc
'POSTとしてデータを送信する
webreq.Method = "POST"
webreq.ContentType = "application/x-www-form-urle...
'417 Expectation Failed が返されないように
webreq.ServicePoint.Expect100Continue = False
'trackパラメータを指定する
Dim postStr As String = "track=2010wc"
Dim postData As Byte() = Encoding.UTF8.GetBytes(p...
webreq.ContentLength = postData.Length
'データを送信する
Dim reqStrm As Stream = webreq.GetRequestStream()
reqStrm.Write(postData, 0, postData.Length)
reqStrm.Close()
'サーバーからの応答を受信するためのHttpWebRespons...
Dim webres As HttpWebResponse = DirectCast(webreq...
'応答データを受信するためのStreamを取得する
Dim st As Stream = webres.GetResponseStream()
Dim sr As New StreamReader(st)
'XMLを切り出すための正規表現
Dim xmlReg As New Regex( _
"<\?xml\s[^>]+>\s*<(?<root>[^\s>]+)[^>]*>(?:....
RegexOptions.Singleline Or RegexOptions.Compi...
'一時的にデータを保存しておくバッファ
Dim buffer As New StringBuilder()
'10秒間だけデータを取得する
Dim startTime As DateTime = DateTime.Now
While (DateTime.Now - startTime).TotalSeconds < 10
Dim line As String = sr.ReadLine()
If line Is Nothing Then
Exit While
End If
If line = "" Then
Continue While
End If
'バッファに追加
buffer.AppendLine(line)
'正規表現と一致するか調べる
Dim m As Match = xmlReg.Match(buffer.ToString...
If m.Success Then
'XmlDocumentに読み込む
Dim xmlDoc As New XmlDocument()
xmlDoc.LoadXml(m.Value)
'ルートを取得
Dim rootElm As XmlElement = xmlDoc.Docume...
'情報の表示
If rootElm.Name = "status" Then
'statusの情報(textとuserのscreen_nam...
Console.WriteLine("[{1}] {0}", _
rootElm("text").InnerText, _
rootElm("user")("screen_name").In...
End If
'バッファをクリア
buffer.Length = 0
End If
End While
'こちらから接続を閉じる
webreq.Abort()
webres.Close()
sr.Close()
Console.WriteLine("----- 終了しました! -----")
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
class TwitterStreamingApiTest
{
static void Main()
{
//HttpWebRequestを作成する
HttpWebRequest webreq = (HttpWebRequest)System.Ne...
"http://stream.twitter.com/1/statuses/filter....
//ユーザー名とパスワードを設定する
NetworkCredential nc = new NetworkCredential("use...
webreq.Credentials = nc;
//POSTとしてデータを送信する
webreq.Method = "POST";
webreq.ContentType = "application/x-www-form-urle...
//417 Expectation Failed が返されないように
webreq.ServicePoint.Expect100Continue = false;
//trackパラメータを指定する
string postStr = "track=2010wc";
byte[] postData = Encoding.UTF8.GetBytes(postStr);
webreq.ContentLength = postData.Length;
//データを送信する
Stream reqStrm = webreq.GetRequestStream();
reqStrm.Write(postData, 0, postData.Length);
reqStrm.Close();
//サーバーからの応答を受信するためのHttpWebRespon...
HttpWebResponse webres = (HttpWebResponse)webreq....
//応答データを受信するためのStreamを取得する
Stream st = webres.GetResponseStream();
StreamReader sr = new StreamReader(st);
//XMLを切り出すための正規表現
Regex xmlReg = new Regex(
@"<\?xml\s[^>]+>\s*<(?<root>[^\s>]+)[^>]*>(?:...
RegexOptions.Singleline | RegexOptions.Compil...
//一時的にデータを保存しておくバッファ
StringBuilder buffer = new StringBuilder();
//10秒間だけデータを取得する
DateTime startTime = DateTime.Now;
while ((DateTime.Now - startTime).TotalSeconds < ...
{
string line = sr.ReadLine();
if (line == null)
break;
if (line == "")
continue;
//バッファに追加
buffer.AppendLine(line);
//正規表現と一致するか調べる
Match m = xmlReg.Match(buffer.ToString());
if (m.Success)
{
//XmlDocumentに読み込む
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(m.Value);
//ルートを取得
XmlElement rootElm = xmlDoc.DocumentEleme...
//情報の表示
if (rootElm.Name == "status")
{
//statusの情報(textとuserのscreen_na...
Console.WriteLine("[{1}] {0}",
rootElm["text"].InnerText,
rootElm["user"]["screen_name"].In...
}
//バッファをクリア
buffer.Length = 0;
}
}
//こちらから接続を閉じる
webreq.Abort();
webres.Close();
sr.Close();
Console.WriteLine("----- 終了しました! -----");
Console.ReadLine();
}
}
}}
**JSONを解析する [#b3cb866c]
[[Twitter Streaming APIのドキュメント>http://apiwiki.twit...
.NET FrameworkでJSONを解析するとなると、.NET Framework 3....
***JavaScriptSerializerを使う [#l6cce571]
以下に、JavaScriptSerializerを使用した例を示します。この...
#code(vbnet){{
Imports System.IO
Imports System.Net
Imports System.Collections.Generic
Module TwitterStreamingApiTest
Sub Main()
'HttpWebRequestの作成
Dim webreq As HttpWebRequest = DirectCast(System....
"http://stream.twitter.com/1/statuses/sample....
Dim nc As New NetworkCredential("username", "pass...
webreq.Credentials = nc
'サーバーからの応答を受信するためのHttpWebRespons...
Dim webres As HttpWebResponse = DirectCast(webreq...
'応答データを受信するためのStreamを取得
Dim st As Stream = webres.GetResponseStream()
Dim sr As New StreamReader(st)
Dim startTime As DateTime = DateTime.Now
While (DateTime.Now - startTime).TotalSeconds < 10
Dim line As String = sr.ReadLine()
If line Is Nothing Then
Exit While
End If
If line = "" Then
Continue While
End If
'JSONのデータをDictionaryに変換する
Dim serializer As New System.Web.Script.Seria...
Dim status As Dictionary(Of String, Object) = _
serializer.Deserialize(Of Dictionary(Of S...
If status.ContainsKey("text") Then
'"text"があればstatusと判断する
Dim user As Dictionary(Of String, Object)...
DirectCast(status("user"), Dictionary...
Console.WriteLine("[{1}] {0}", status("te...
ElseIf status.ContainsKey("delete") Then
Console.WriteLine("[DELETE]")
End If
End While
'閉じる
webreq.Abort()
webres.Close()
sr.Close()
Console.WriteLine("----- 終了しました! -----")
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
using System;
using System.IO;
using System.Net;
using System.Collections.Generic;
class TwitterStreamingApiTest
{
static void Main()
{
//HttpWebRequestの作成
HttpWebRequest webreq = (HttpWebRequest)System.Ne...
"http://stream.twitter.com/1/statuses/sample....
NetworkCredential nc = new NetworkCredential("use...
webreq.Credentials = nc;
//サーバーからの応答を受信するためのHttpWebRespon...
HttpWebResponse webres = (HttpWebResponse)webreq....
//応答データを受信するためのStreamを取得
Stream st = webres.GetResponseStream();
StreamReader sr = new StreamReader(st);
DateTime startTime = DateTime.Now;
while ((DateTime.Now - startTime).TotalSeconds < ...
{
string line = sr.ReadLine();
if (line == null)
break;
if (line == "")
continue;
//JSONのデータをDictionaryに変換する
System.Web.Script.Serialization.JavaScriptSer...
new System.Web.Script.Serialization.JavaS...
Dictionary<string, object> status =
serializer.Deserialize<Dictionary<string,...
if (status.ContainsKey("text"))
{
//"text"があればstatusと判断する
Dictionary<string, object> user =
(Dictionary<string, object>)status["u...
Console.WriteLine("[{1}] {0}", status["te...
}
else if (status.ContainsKey("delete"))
{
Console.WriteLine("[DELETE]");
}
}
//閉じる
webreq.Abort();
webres.Close();
sr.Close();
Console.WriteLine("----- 終了しました! -----");
Console.ReadLine();
}
}
}}
***Json.NETを使う [#xc8e0128]
JSONを扱うフリーのライブラリとしては、[[Json.NET>http://j...
以下にJson.NETのLINQ to JSONを使った例を紹介します。なお....
#code(vbnet){{
Imports System.IO
Imports System.Net
Module TwitterStreamingApiTest
Sub Main()
'HttpWebRequestの作成
Dim webreq As HttpWebRequest = DirectCast(System....
"http://stream.twitter.com/1/statuses/sample....
Dim nc As New NetworkCredential("username", "pass...
webreq.Credentials = nc
'サーバーからの応答を受信するためのHttpWebRespons...
Dim webres As HttpWebResponse = DirectCast(webreq...
'応答データを受信するためのStreamを取得
Dim st As Stream = webres.GetResponseStream()
Dim sr As New StreamReader(st)
Dim startTime As DateTime = DateTime.Now
While (DateTime.Now - startTime).TotalSeconds < 10
Dim line As String = sr.ReadLine()
If line Is Nothing Then
Exit While
End If
If line = "" Then
Continue While
End If
'JSONをParse
Dim json As Newtonsoft.Json.Linq.JObject = _
Newtonsoft.Json.Linq.JObject.Parse(line)
Dim token As Newtonsoft.Json.Linq.JToken = No...
If json.TryGetValue("text", token) Then
'"text"があればstatusと判断する
'Stringにキャストしないと、前後に"が入る
Console.WriteLine("[{1}] {0}", _
CType(json("text"), String), _
CType(json("user")("name"), String))
ElseIf json.TryGetValue("delete", token) Then
Console.WriteLine("[DELETE] {0}", json("d...
End If
End While
'閉じる
webreq.Abort()
webres.Close()
sr.Close()
Console.WriteLine("----- 終了しました! -----")
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
using System;
using System.IO;
using System.Net;
class TwitterStreamingApiTest
{
static void Main()
{
//HttpWebRequestの作成
HttpWebRequest webreq = (HttpWebRequest)System.Ne...
"http://stream.twitter.com/1/statuses/sample....
NetworkCredential nc = new NetworkCredential("use...
webreq.Credentials = nc;
//サーバーからの応答を受信するためのHttpWebRespon...
HttpWebResponse webres = (HttpWebResponse)webreq....
//応答データを受信するためのStreamを取得
Stream st = webres.GetResponseStream();
StreamReader sr = new StreamReader(st);
DateTime startTime = DateTime.Now;
while ((DateTime.Now - startTime).TotalSeconds < ...
{
string line = sr.ReadLine();
if (line == null)
break;
if (line == "")
continue;
//JSONをParse
Newtonsoft.Json.Linq.JObject json = Newtonsof...
Newtonsoft.Json.Linq.JToken token;
if (json.TryGetValue("text", out token))
{
//"text"があればstatusと判断する
//Stringにキャストしないと、前後に"が入る
Console.WriteLine("[{1}] {0}",
(string)json["text"], (string)json["u...
}
else if (json.TryGetValue("delete", out token))
{
Console.WriteLine("[DELETE] {0}", json["d...
}
}
//閉じる
webreq.Abort();
webres.Close();
sr.Close();
Console.WriteLine("----- 終了しました! -----");
Console.ReadLine();
}
}
}}
***補足 : .NET Framework 1.1以前の場合 [#v504b851]
[[JSON>http://json.org/json-ja.html]]で紹介されているC#の...
JSON.csの277行にある
#code(csharp){{
s.Append(Char.ConvertFromUtf32((int)codePoint));
}}
を
#code(csharp){{
s.Append(Encoding.UTF32.GetString(BitConverter.GetBytes(c...
}}
に変更することで、このエラーは出なくなりました。
**コメント [#zfa79d0f]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2010-06-21 (月) 01:23:58,DOB...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]