JavaでHTTPクライアントを利用する場合何を利用しているだろうか。
直にソケット通信はやってる人はまずいないだろう。ヘッダとかなにもあったもんじゃないし。
標準APIで一番利用されるのはHttpURLConnectionだろうか。でもこれも面倒だ。一番やり取りをするEntityの扱いがInputStreamだけで非常に貧弱だ。
そこでJAX-RSの参照実装であるJerseyのクライアント。ほかにもJAX-RSの実装ではクライアントが各自あるが、今回はもっともメジャーなJerseyで。
Client client = Client.create(); WebResource wr = client.resource("http://www.yahoo.co.jp/"); String result = wr.get(String.class); System.out.println(result);
これでヤフーのトップページをGETで取得できる。らくちん。
メソッドを変えたりHTTPステータスを調べたり各種ヘッダを見たり、引数のクラス指定でJavaBeansをかいとけばJsonを自動でマッピングとかも可能。LastModifiedとかResponseDateとかちゃんとjava.util.Dateでかえってくるのでこのへんも楽チン。フィルターもあるのでいろいろと手を入れることも可能である。
本当にほしい機能だけがぎっしりとつまってるのでHTTPでアクセスするならこれをぜひ利用しよう。