WebViewClient должен InterceptRequest обрабатывать сжатые данные

Я хочу перехватить все HTTP-запросы в WebViewClient и сделать свои собственные запросы. Проблема, с которой я сталкиваюсь, связана с gzip-ответами.

Есть несколько разных сообщений, предлагающих методы, которые будут работать (например, AndroidHttpClient.getUngzippedContent(entity) или GZIPInputStream(entity.getResponse())), но когда я возвращаю для них WebResourceResponses, страница загружается пустой. Я предполагаю, что это связано с тем, что html заархивирован, а затем он не обрабатывается должным образом, поэтому остальная часть страницы даже не запрашивается.

У кого-нибудь есть 100% рабочий метод для простого перехвата каждого HTTP-запроса и возврата WebResourceResponse? В настоящее время я могу сделать это для всего, что не сжато, но для ответов, сжатых с помощью gzip, я возвращаю null (что означает, что запрос не перехватывается и, таким образом, выполняется дважды), чтобы страница загружалась правильно.

Будем очень признательны за любую помощь или шаг в правильном направлении. Я полагаю, что это, вероятно, не так уж сложно, но я совершенно в тупике.


person Quasimodo McDonald    schedule 20.06.2012    source источник


Ответы (1)


Старайтесь избегать заголовков Accept при запросе ресурсов. Сервер отправит вам полные данные, если вы не примете данные gzip при запросе.

person Parth Vora    schedule 08.05.2015