В httpclient, какой самый элегантный / правильный способ превратить HttpEntity в строку? - PullRequest
5 голосов
/ 11 января 2010

Я извлекаю веб-страницу с помощью Java-библиотеки Apache httpcomponents . После подключения я получаю HttpEntity, который имеет метод getContent(), который возвращает InputStream, а также метод writeTo(), который записывает в OutputStream.

Я хочу превратить результат в строку для извлечения информации. Какой самый элегантный (и безопасный) способ сделать это?

Некоторые возможные решения:

  • Запись в ByteArrayOutputStream, а затем преобразование этих байтов в строку с помощью конструктора строки
  • использовать InputStreamReader для чтения прямо из потока и поместить в StringBuilder

Оба они чувствуют себя немного уродливо. Вы бы порекомендовали выбрать один из них или что-то еще?

Ответы [ 3 ]

6 голосов
/ 27 сентября 2012

System.out.println (EntityUtils.toString (httpResponse.getEntity ()));

4 голосов
/ 11 января 2010

А как насчет (псевдо):

BasicResponseHandler handler = new org.apache.http.impl.client.BasicResponseHandler ();    
String str = httpClient.execute(request, handler);

В этом случае вам придется самостоятельно обрабатывать исключения.

0 голосов
/ 11 января 2010

Это может быть некрасиво, но я думаю, что это единственный способ сделать это. Вы можете использовать IOUtils.toString () из Commons-IO, но без необходимости писать собственный код.

...