クライアント側からのメッセージ送信がちゃんと実装できたので書いておく。
送信になってもコネクションの部分はあまり変わらず、開くURLがhttp://twitter.com/statuses/update.xmlになること、setRequestMethodで設定する値が"GET"から"POST"になること、setDoOutPutメソッドを呼び出してtrueを設定しておくことが主な違いになる。
そして実際にメッセージを送信する部分は以下のようになった。
message = URLEncoder.encode(message, "utf-8"); PrintWriter out = new PrintWriter(urlConnPost.getOutputStream()); out.print("status="+message); out.close(); InputStream is = urlConnPost.getInputStream();
最初の行では送信するデータをURLEncoderクラスを使ってエンコードしている。理由はtwitter API DocumentationにURLエンコードが必須であると書いてあったからである。おそらく外したら文字化けしてしまうのだろう・・・だが、実際に外した状態で動かしたことはないのでもしかすると普通に動くかもしれない。
真ん中3行がメッセージの送信処理。
そして問題が最後の行。InputStreamを受け取るだけのコード。この後InputStreamのインスタンスであるisには全く出番がないのだが、なぜかこの部分がないとtwitterに投稿が反映されない。なぜなのだろうか? よくわからない。
なんにせよ、一応タイムライン取得とメッセージ送信ができたのでやっとまともに「twitterクライアント」と呼べるものができたように思う。
まだやらなければならないところはあるけれど、とりあえずここまで作れたらちょっとした満足感が生まれた。後はちまちまと修正しよう。