シンプルな、HttpGetサンプル(Java編)

最近、Webサービスを扱うことが多く、URLを組み立てた後で、HttpにてGETする機会が多いです。

会社でも、環境の異なる複数のパソコンに開発環境を用意したり、自宅でも同じようなことをやっていると、最初にGETに成功する環境を作り上げるのにかかる時間が惜しいな。。と思い始めました。

そこで、もっともシンプルなGetした結果をConsoleに表示するプログラムをメモしておこうと思います。

2016年12月追記

この方法はApacheのライブラリを使います。別に、Javaの標準クラス「HttpURLConnection」を使った方法もあり、場合によってはそちらの方がシンプルで良いという人もいるかもしれません。その方法については、新たに記事を書きましたので、そちら(HttpURLConnectionを使ってPOSTやGETでリクエストするサンプル(proxyも考慮))を参考にしてください。

その前に、Javaなので、ライブラリから用意しておきます。

ApacheのHttpComponentsから必要なライブラリをダウンロードして、ClassPathに通しておきましょう。

この記事を書いた当時の最新版は、HttpClient 4.2.1のhttpcomponents-client-4.2.1-bin.zipでした。

さて、早速、コードです。

public void executeHttpGet(){
 
        DefaultHttpClient httpclient = null;
        HttpHost targetHost = null;
        HttpEntity entity = null;
 
        try {
            httpclient = new DefaultHttpClient();
 
            targetHost = new HttpHost("news.google.com", 443, "https");
 
            HttpGet httpget = new HttpGet("https://news.google.com/news/feeds?q=google&output=rss");
 
            HttpResponse response = httpclient.execute(targetHost, httpget);
            entity = response.getEntity();
 
            if(response.getStatusLine().getStatusCode() != 200 ){
 
            System.out.println("StatusCode:" + response.getStatusLine().getStatusCode());
                return;
            }
 
            if (entity != null) {
 
                System.out.println(EntityUtils.toString(entity));
                System.out.println("length: " + entity.getContentLength());
 
                EntityUtils.consume(entity);
                //depriciated
                entity.consumeContent();
            }
 
        } catch (Exception e) {
            e.printStackTrace();
 
        }finally {
            httpclient.getConnectionManager().shutdown();
        }
 
    }

targetHost = new HttpHost(“news.google.com”, 443, “https”);

の部分は、たまたまSSLだったので、こうなっていますが、普通は

targetHost = new HttpHost(“news.google.com”, 80, “http”);

ですかね。