AndroidでTwitterのタイムラインを取得する【XmlPullParser】
こんにちは。daichi1128です。
以前、ListViewのカスタマイズとしてTwitter風のListViewを作成しました。
ListViewをカスタマイズする | Techfirm Android Lab
せっかくなので、今回は続きとしてネットワーク通信をしてTwitterのタイムラインを取得する部分を作ってみます。
今回必要な作業は
- Twitter APIの理解
- AndroidでHTTP通信
- XMLデータのパース
です。
Twitter APIの理解
Twitterのタイムラインを取得するにはTwitter APIを利用します。
Twitter API Wiki / Twitter API Documentation
今回はアカウントの認証が不要なpublicなタイムラインを取得することにします。
Twitter API Wiki / Twitter REST API Method: statuses public_timeline
リンク先のドキュメントによると、http://twitter.com/statuses/public_timeline.xmlへGETメソッドでアクセスすればXML形式のレスポンスが受け取れるとあります。
レスポンスデータは以下の形式です。
この中から、名前とつぶやきを表示したいので、textとscreen_nameを取得します。
今回はアイコン画像(profile_image_url)や日付(created_at)は遠慮しておきます。
AndroidでHTTP通信
HTTP通信部分はユーティリティクラスとして作成してみます。
URL文字列を渡すと、byte配列をかえすメソッドです。
Android特有の処理はまったくありません。
Pure Javaの処理だけです。
androidのHTTP通信のユーティリティを作った。 – hidecheckの日記
ソースは猛烈に参考にさせていただきました。
あとはAndroidManifest.xmlに以下の1行を追加。
これでHTTP通信が可能になります。
XMLデータのパース
パーサはSAXパーサやDOMパーサよりも高速なXmlPullParserを使います。
XmlPullParser parser = Xml.newPullParser();
でXmlPullParserインスタンスを生成します。
byte[] data = HttpClient.getByteArrayFromURL(urlStr);
でレスポンスデータをbyte配列で取得。
parser.setInput(new StringReader(new String(data, “UTF-8″)));
でパーサにパースする文字列を渡しています。
parser.getEventType();
ではドキュメントの開始やタグの開始、終了といったイベントを取得できます。
上の処理では、ドキュメントの開始、すなわち、最初の読み込みのタイミングでTwitterStatusを保持するリストを生成。
また、
上であげたTwitter APIのレスポンスと見比べてみてください。
あとは前回のソースでcreateDummyData()を読んでいた部分をgetTwitterTimeline()などとして、その中でパーサを生成、パースの実行を行えばHTTP通信でtwitterタイムラインの取得は完成です。
※画像は今後非同期通信で取得するため、まだ決めうちのままです。キャッシュも行いたいです。



