[Android] HttpURLConnection:HTTPレスポンスヘッダの一覧を取得する

ここではHttpURLConnectionを使ってHTTPレスポンスヘッダの一覧を取得する方法について説明します。
広 告
目次
前提条件
- 「HttpURLConnection:GETリクエストでテキストを取得する」を実施していること
動作確認端末
- Google Nexus 7 – 5.1.1 – API22(実機)
1. HTTPレスポンスヘッダの一覧を取得する
ここではHTTPレスポンスヘッダの一覧を取得する方法について説明します。HTTPリクエストを送信し、レスポンスを取得するまでの手順については「HttpURLConnection:GETリクエストでテキストを取得する」を参照ください。
HTTPレスポンスのヘッダ一覧を取得するためには、URLConnection#connect()を実行した後に、以下のコードを実行します。
HTTPレスポンスのヘッダ一覧をログ出力する
final Map<String, List> headers = con.getHeaderFields(); for (String key : headers.keySet()) { final List valueList = headers.get(key); final StringBuilder values = new StringBuilder(); for (String value : valueList) { values.append(value + " "); } Log.i(getClass().getSimpleName(), key + " : " + values.toString()); }
URLConnection#getHeaderFields()を使用するとヘッダ一覧がMap<String, List<String>>
型で取得できます。取得したMap
のキーにはヘッダのキー名が、Map
のバリューにはヘッダの値が格納されています。
上記コードを実行するうと以下のような結果が得られます。
ヘッダ一覧の取得例
I/HttpGetTask: null : HTTP/1.1 200 OK I/HttpGetTask: Accept-Ranges : bytes I/HttpGetTask: Connection : Keep-Alive I/HttpGetTask: Content-Length : 307 I/HttpGetTask: Content-Type : text/html I/HttpGetTask: Date : Mon, 25 Jan 2016 15:33:32 GMT I/HttpGetTask: ETag : "ac3ad1-133-5285002bd2c00" I/HttpGetTask: Keep-Alive : timeout=5 max=100 I/HttpGetTask: Last-Modified : Sat, 02 Jan 2016 01:43:12 GMT I/HttpGetTask: Server : Apache/2.2.29 (Unix) mod_wsgi/3.5 Python/2.7.10 PHP/5.6.10 mod_ssl/2.2.29 OpenSSL/0.9.8zg DAV/2 mod_fastcgi/2.4.6 mod_perl/2.0.9 Perl/v5.22.0 I/HttpGetTask: X-Android-Received-Millis : 1453735995324 I/HttpGetTask: X-Android-Response-Source : NETWORK 200 I/HttpGetTask: X-Android-Sent-Millis : 1453735995312
2. 参考URL
HttpURLConnection | Android Developers
http://developer.android.com/intl/ja/reference/java/net/HttpURLConnection.html