Подтвердить что ты не робот

Как я могу получить строку из моего андроида HTTP-ответа?

Я видел какой-то действительно уродливый код от людей, которые пишут собственные методы преобразования 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();

это не просто беспорядок, но он действительно уродлив, и я часто не могу сказать, что происходит с кодом, потому что этот беспорядок предшествует ему. Есть ли лучший способ сделать это?

4b9b3361

Ответ 1

ДА, ЕСТЬ! ВЫ МОЖЕТЕ СДЕЛАТЬ ВСЕ ЧТО В ОДНОЙ ЛИНИИ! Именно так:

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

счастливое создание приложений

Ответ 2

Я сделал это с обработчиком ответа из документации 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.