JSONFunction.getHTTPResponseBodyString メソド
引数を HttpRequestBase で括って受けとっているのですが、どうも HttpUriRequest インターフェースで括った方が良いみたい。
ということに AbstractHttpClient|Android Developers の execute メソドの項を見てて気がついた次第orz
試験するのが微妙に面倒いんだけどどうしよ。
もうちょい中身確認
以下の記述なのですが
return httpclient.execute(request, new ResponseHandler<String>() { @Override public String handleResponse(HttpResponse response)
AbstractHttpClient#execute メソドの第二引数に ResponseHandler なオブジェクトを取るヤツでマニュアル曰く_Executes a request using the default context and processes the response using the given response handler._とあります。
実際にレスポンスの後始末をするのが ResponseHandler#handleResponse メソドで直下で定義されています。
public String handleResponse(HttpResponse response) throws ClientProtocolException, IOException { switch (response.getStatusLine().getStatusCode()) { case HttpStatus.SC_OK: return EntityUtils.toString(response.getEntity(), "UTF-8"); default: throw new RuntimeException("HTTP Status is " + response.getStatusLine().getStatusCode()); } }
この方式をチョイスしたきっかけは以下エントリです。
曰く_HttpResponseの内部リソースを自動で解放してくれる_との事。実はこれを採用したきっかけというのも OOM でアプリが死にまくってて、メモリリークの犯人探しをしていて云々、だったりしてorz
ちなみに
JSONFunction では何もしていないのですが上記エントリでは強調表示で以下な記述があります。
HttpClient を使い終わったら必ず getConnectionManager().shutdown() する
とりあえず備忘、ということにて。
引数のデータ型
修正してリポジトリに push してます。