Twitter APIをJavaから使ってみる

先日の日記でやっていた、JavaからTwitter APIを使う方法のソースを書いておきます。
本気でやるのはAdobe AIRを使いたいので、その前にけじめとして。


以下、タイムラインを取得する部分のコード。

try {
        URL url = new URL("http://twitter.com/statuses/friends_timeline.xml");
    
        //ここにユーザーネームとパスワードを入力。
        String username = "yourUserName";
        String password = "yourPassword";
        
        HttpAuthenticator http_authenticator = new HttpAuthenticator(username, password);
        Authenticator.setDefault(http_authenticator);

        HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
        
        urlConn.setRequestMethod("GET");
        urlConn.setInstanceFollowRedirects(false);
        urlConn.setRequestProperty("Accept-Language", "ja;q=0.7,en;q=0.3");
        
        urlConn.connect();

        Map headers = urlConn.getHeaderFields();
        Iterator it = headers.keySet().iterator();
        System.out.println("レスポンスヘッダ:");
        while (it.hasNext()) {
            String key = (String) it.next();
            System.out.print("  " + key + ": " + headers.get(key) + "\n");
        }

        System.out.println("レスポンスコード[" + urlConn.getResponseCode() + "] " +
                "レスポンスメッセージ[" + urlConn.getResponseMessage() + "]" );
        System.out.println("\n---- ボディ ----");

        BufferedReader reader =
                new BufferedReader(new InputStreamReader(urlConn.getInputStream()));

        while (true) {
            String line = reader.readLine();
            if (line == null) {
                break;
            }
            
            System.out.printlnt(line + "\n");
        }

        reader.close();
        urlConn.disconnect();
        
        System.out.println("タイムライン取得完了");
        
    } catch (MalformedURLException ex) {
        Logger.getLogger(TwitterClientView.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(TwitterClientView.class.getName()).log(Level.SEVERE, null, ex);
    }
import java.net.Authenticator;
import java.net.PasswordAuthentication;

/**
 * 以下、HttpAuthenticator クラス。Basic認証に使う。
 *
 * @author shiraminekeisuke
 */
public class HttpAuthenticator extends Authenticator {

    private String username;
    private String password;

    public HttpAuthenticator(String username, String password) {
        this.username = username;
        this.password = password;
    }

    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password.toCharArray());
    }

    public String myGetRequestingPrompt() {
        return super.getRequestingPrompt();
    }
}


コンパイルしてないんで動かないかもしれません。ご了承ください。

以上のソースコードは自由にコピーおよび改変することが出来ますが、その利用に伴って利用者が追った損害等につきましてはMineAP(Shiramine Keisuke)は何ら保証しないものとします。


参考URL
http://x68000.q-e-d.net/~68user/net/java-http-url-connection-1.html


Twitter4Jを使うのも良さそうです。
http://yusuke.homeip.net/twitter4j/ja/index.html