У меня HTTP-соединение с веб-сервером, запрашивающим данные JSON. Я хочу сжать этот поток данных с помощью Content-Encoding: gzip
. Есть ли способ установить Accept-Encoding: gzip
в моем HttpClient? Поиск gzip
в справочниках Android не обнаруживает ничего, связанного с HTTP, как вы можете видеть здесь .
109
new WebRequest().get().to("http://www.example.com/").askForGzip(true).executeSync()
. В частности, метод parseResponse (...) должен быть тем, что вы ищете.Ответы:
Вы должны использовать заголовки http, чтобы указать, что соединение может принимать данные в кодировке gzip, например:
Проверить ответ на кодировку содержимого:
источник
gzip
чтобы действительно включить сжатие gzip. (2) имейте в виду, что сервер может не сжать ответ, если он слишком мал ...Если вы используете API уровня 8 или выше, есть AndroidHttpClient .
У него есть такие вспомогательные методы, как:
и
приводит к гораздо более сжатому коду:
источник
Я думаю, что пример кода по этой ссылке более интересен: ClientGZipContentCompression.java
Они используют HttpRequestInterceptor и HttpResponseInterceptor.
Образец для запроса:
Образец ответа:
источник
Я не использовал GZip, но предполагаю, что вы должны использовать входной поток из вашего
HttpURLConnection
илиHttpResponse
asGZIPInputStream
, а не из какого-то конкретного другого класса.источник
В моем случае это было так:
источник