В httpclient какой самый элегантный/правильный способ превратить httpentity в строку?
-
19-09-2019 - |
Вопрос
Я получаю веб -страницу, используя Apache httpcomponents java библиотека. Анкет После подключения результата, который я получу HttpEntity
который имеет метод getContent()
который возвращает InputStream
а также имеет метод writeTo()
который пишет в OutputStream.
Я хочу превратить результат в строку для извлечения информации. Какой самый элегантный (и безопасный) способ сделать это?
Некоторые возможные решения:
- Написать
ByteArrayOutputStream
а затем преобразовать эти байты в строку со строковым конструктором - Используйте inputStreamReader, чтобы прочитать прямо из потока, и положите в StringBuilder
Оба они чувствуют себя немного уродливыми. Вы бы порекомендовали выбрать одно из них или что -то еще?
Решение
Как насчет (псевдо):
BasicResponseHandler handler = new org.apache.http.impl.client.BasicResponseHandler ();
String str = httpClient.execute(request, handler);
В этом случае вам придется обработать исключения самостоятельно.
Другие советы
System.out.println (entityutils.tostring (httpresponse.getentity ()));
Это может быть некрасиво, но я думаю, что это единственный способ сделать это. Вы можете использовать Ioutils.tostring () из Commons-IO, хотя без необходимости писать свой собственный код.