2013-05-08 19 views
5

Nie mogę zrozumieć, co mówi o tym dokumentacja.Android HttpURLConnection: kompresja gzip

Domyślnie ta implementacja HttpURLConnection wymaga, aby serwery używały kompresji gzip. Ponieważ getContentLength() zwraca liczbę przesłanych bajtów, nie można użyć tej metody do przewidywania, ile bajtów można odczytać z getInputStream(). Zamiast tego, czytaj ten strumień, aż się wyczerpie: gdy read() zwróci -1. kompresja gzip mogą być wyłączone przez ustawienie dopuszczalne kodowania w nagłówku żądania:

urlConnection.setRequestProperty("Accept-Encoding", "identity"); 

chciałbym wiedzieć, czy bieżąca realizacja faktycznie dekompresji strumienia przed wpuszczeniem go (używając conn.getInputStream()) czy też po prostu mówi, że połączenie automatycznie wysyła nagłówek dla kodowania gzip i muszę nim zarządzać.

Dzięki.

Odpowiedz

11

Nie musisz tego obchodzić. wystarczy użyć conn.getInputStream()

Od this blogpost:

W Piernika, dodaliśmy kompresję odpowiedzi przejrzyste. HttpURLConnection automatycznie doda ten nagłówek do żądań wychodzących i obsłużyć odpowiedź:

Accept-Encoding: gzip

+1

Źródło: [Android Developers Blog - Android HTTP Klienci] (http: // Android deweloperów. blogspot.com/2011/09/androids-http-clients.html) – Czechnology

Powiązane problemy