我看到一些非常难看的代码来自人们编写自己的方法将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();
不仅有点混乱,而且它真的很难看,而且我经常无法分辨出代码发生了什么,因为这个混乱在它之前。有没有更好的方法呢?
答案 0 :(得分:43)
是的,有!你可以在一条线上完成所有这些!像这样:
response = client.execute(post);
String responseStr = EntityUtils.toString(response.getEntity());
快乐的应用制作
答案 1 :(得分:4)
我是使用HttpClient.execute documentation的响应处理程序完成的。使用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。