JavaのHTTPライブラリでTwiter API取得
HTTP通信用のAPI、HttpURLConnectionを使ったサンプルコードです。
Twitterのpublic_timelineというAPIは、その名の通りパブリックタイムライン(Twitterの全ユーザーの公開つぶやき一覧)を取得するAPIですが、OAuth等の認証が不要なため、サンプルコードにちょうど良いです。
import static java.io.File.separator; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class Twitter { // ※注 これはMac用のパスなのでWindowsなら"Desktop"を"デスクトップ"に変えると多分うまくいく public static final String DESKTOP = System.getProperty("user.home") + separator + "Desktop" + separator; public static final String URL_PUBLIC_TIMELINE = "http://api.twitter.com/1/statuses/public_timeline.xml"; public static void main(String[] args) throws IOException { Twitter twitter = new Twitter(); twitter.outputPublicTimelineXML(); } // public_timelineをXMLで出力 public void outputPublicTimelineXML() throws IOException { URL url = new URL(URL_PUBLIC_TIMELINE); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); //connection.setRequestProperty("Accept-Language", "ja;q=0.7,en;q=0.3"); // 接続 connection.connect(); //// レスポンスヘッダ出力 //Map<String, List<String>> headerMap = connection.getHeaderFields(); //Set<String> keys = headerMap.keySet(); //for (String key : keys) { // List<String> list = headerMap.get(key); // System.out.println(key + ": " + list); //} // ステータスコード&テキストフレーズ出力 int code = connection.getResponseCode(); String message = connection.getResponseMessage(); System.out.println(code + " " + message); // ファイル出力 outputFile(DESKTOP, connection.getInputStream()); // 切断 connection.disconnect(); } // InputStreamからファイル出力 public void outputFile(String path, InputStream input) throws IOException { File file = new File(path + "public_timeline.xml"); BufferedReader br = new BufferedReader(new InputStreamReader(input)); BufferedWriter bw = new BufferedWriter(new FileWriter(file)); while (br.ready()) { String line = br.readLine(); bw.write(line); } if (br != null) br.close(); if (bw != null) bw.close(); } }
Twitterは、XMLまたはJSON形式でリソースを取得できます。あとはパーサー自分で作るかライブラリ探してくるかして、本当に必要な文字列だけ取得すればTwitterクライアントが作れます。そこが一番面倒なんだろうけど。
ちなみに、"レスポンスヘッダ"とか"ステータスコード"とか"テキストフレーズ"とか、"Accept-Language"とかの用語をみてチンプンカンプンな人は、HTTPの仕様を少しだけ学ぶ必要があります。いまなら「Webを支える技術」がベストですね。
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
- 作者: 山本陽平
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/08
- メディア: 単行本(ソフトカバー)
- 購入: 143人 クリック: 4,320回
- この商品を含むブログ (183件) を見る