Ответ 1
ДА, ЕСТЬ! ВЫ МОЖЕТЕ СДЕЛАТЬ ВСЕ ЧТО В ОДНОЙ ЛИНИИ! Именно так:
response = client.execute(post);
String responseStr = EntityUtils.toString(response.getEntity());
счастливое создание приложений
Я видел какой-то действительно уродливый код от людей, которые пишут собственные методы преобразования 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();
это не просто беспорядок, но он действительно уродлив, и я часто не могу сказать, что происходит с кодом, потому что этот беспорядок предшествует ему. Есть ли лучший способ сделать это?
ДА, ЕСТЬ! ВЫ МОЖЕТЕ СДЕЛАТЬ ВСЕ ЧТО В ОДНОЙ ЛИНИИ! Именно так:
response = client.execute(post);
String responseStr = EntityUtils.toString(response.getEntity());
счастливое создание приложений
Я сделал это с обработчиком ответа из документации HttpClient.execute. Использование обработчика в качестве второго параметра для метода .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.