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

就在这里!您可以在一条线上完成所有这些!像这样:

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

快乐的应用制作

于 2013-03-25T15:35:08.900 回答
4

我使用HttpClient.execute 文档中的响应处理程序完成了它。使用 handler 作为 .execute 方法的第二个参数定义响应应该是什么格式。
我的代码如下:

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 回答