Задать вопрос
@Adrenal1ne1

Как получить текст страницы, а не exception?

Добрый день.

Хочу получить данные с сайта, для этого использую Apache HttpComponents.
Запрос такой:
public Header[] sendRequest() throws IOException {
        CloseableHttpResponse responsePost = null;
        HttpPost httpPost;
        httpPost = new HttpPost(urlForRequest);
        httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
        responsePost = httpClient.execute(httpPost);
        HttpEntity entityPost = responsePost.getEntity();
        sourceTextFile = EntityUtils.toString(entityPost);
        responsePost.close();
        return responsePost.getHeaders("Location");
    }


При запросе текста страницы вылетает исключение

15:39:20,061 ERROR [stderr] java.nio.charset.IllegalCharsetNameException: America/New_York

Заголовок ответа содержит ошибочные данные
Connection : close
Content-Encoding: gzip
Content-Length: 20
Content-Type: text/html; charset=America/New_York
Date : Thu, 13 Oct 2016 12:41:28 GMT

из-за этого заголовка я не могу получить текст сайта.
Как обойти данную ошибку ?
  • Вопрос задан
  • 187 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Adrenal1ne1 Автор вопроса
Нашел ответ на _http://stackoverflow.com/questions/309424/read-con... . просто получаем содержимое через InputStream с помощью метода getContent();

private String getStringFromInputStream(InputStream inputStream) {
        final int bufferSize = 1024;
        final char[] buffer = new char[bufferSize];
        final StringBuilder out = new StringBuilder();
        Reader in = null;
        try {
            in = new InputStreamReader(inputStream, "UTF-8");
            for (; ; ) {
                int rsz = in.read(buffer, 0, buffer.length);
                if (rsz < 0)
                    break;
                out.append(buffer, 0, rsz);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return out.toString();
    }


...
HttpEntity entityGet = response.getEntity();
            tempSourceFile = getStringFromInputStream(response.getEntity().getContent());
...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы