web-dev-qa-db-ja.com

http response androidから文字列を取得するにはどうすればよいですか?

HttpResponseを後で使用する文字列に変換する独自のメソッドを作成している人々から、非常に見苦しいコードを見たことがあります。これは次のようになります。

httppost.setEntity(new UrlEncodedFormEntity(valuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF8"),8);
StringBuilder sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line="0";
while ((line = reader.readLine()) != null) {
    sb.append(line + "\n");
}
is.close();
String result = sb.toString();

それはやや混乱しているだけでなく、本当に醜く、この混乱が先行しているため、コードで何が起こっているのかわからないことがよくあります。これを行うためのより良い方法はありますか?

12
Austin

HttpClient.executeドキュメント の応答ハンドラーを使用して実行しました。ハンドラーを.executeメソッドの2番目のパラメーターとして使用すると、応答の形式が定義されます。
私のコードは次のとおりです。

HttpClient client = new DefaultHttpClient();

        HttpGet request = new HttpGet(params[0]);
        ResponseHandler<String> handler = new BasicResponseHandler();
        String response = "";
        try {
            response = client.execute(request, handler);
        } catch (IOException e) {
            e.printStackTrace();
        }

params[0]は文字列形式のURLです。私のサーバーはJSONで応答を返すと言うことが重要かもしれません。したがって、最終的にはresponse文字列をJSONに変換します。

4
mdzeko