12

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();

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

4

2 に答える 2

43

はいあります!そのすべてを1行で実行できます!ちょうどこのような:

response = client.execute(post);
String responseStr = EntityUtils.toString(response.getEntity());

幸せなアプリ作り

于 2013-03-25T15:35:08.900 に答える
4

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に変換します。

于 2014-07-16T12:29:31.390 に答える