ぬるぽの記録 HttpURLConnection.getHeaderFieldKey(0)

HttpURLConnectionクラスでHTTP接続をし、そのレスポンスヘッダをハッシュテーブルに格納しようとしてぬるぽが出た。

元のコード:

// レスポンスヘッダを取得
int i=0;
String key, value;
while( (value = urlconn.getHeaderField(i) )!=null){
	responseHeaders.put(urlconn.getHeaderFieldKey(i), value);
	i++;
}

原因は、HttpURLConnectionクラスのgetHeaderFieldKey(0)でnullが返ってくること。キーnullに対し200 OKなどのHTTPレスポンスコードとメッセージが返される仕様になっている。そのままハッシュテーブルにキーnullで値を挿入しようとしたためぬるぽが出てしまっていた。

修正後のコード:

// レスポンスヘッダを取得
int i=0;
String key, value;
while( (value = urlconn.getHeaderField(i) )!=null){
	if ( (key = urlconn.getHeaderFieldKey(i) )!=null){
		responseHeaders.put(key, value);
	}
	i++;
}
Categories: HowTo's, Tips and Tricks |Tagged , | Trackback URL |