最近、Webサービスを扱うことが多く、URLを組み立てた後で、HttpにてGETする機会が多いです。
会社でも、環境の異なる複数のパソコンに開発環境を用意したり、自宅でも同じようなことをやっていると、最初にGETに成功する環境を作り上げるのにかかる時間が惜しいな。。と思い始めました。
そこで、もっともシンプルなGetした結果をConsoleに表示するプログラムをメモしておこうと思います。
その前に、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”);
ですかね。