Witam. Chodzi mi mianowicie o czytanie danych, które są przesyłane jako odpowiedź serwera w protokole HTTP - oczywiście danych skompresowanych gzipem.
Więc tak: wysyłam żądanie do serwera X, serwer X przesyła mi nagłówki odpowiedzi. Jednym z nich jest:
Content-Encoding: gzip
Teraz wiadomo, że odpowiedź trzeba zdekopresować przed odczytem.
Standardowo wystarczy czytać kolejne bajty wprost z InputStream. Wydawało mi się, że w tym szczególnym wypadku powinno się zrobić coś takiego:
InputStream is = ... // strumień wejścia, czytający dane z odpowiedzi serwera
GZIPInputStream gzip = new GZIPInputStream(is);
i czytać bajty ze zmiennej 'gzip'.
Niestety pojawił się wyjątek:
"Not in GZIP format" w GZIPInputStream.readHeader()
I teraz nie wiem co począć... dane ze strumienia na pewno są kompresowane, jednak co innego twierdzi GZIPInputStream
PS: najpierw czytam standardowo wszystkie nagłówki odpowiedzi wraz z CRLF na końcu. Dopiero wtedy tworzę GZIPInputStream i czytam ciało dokumentu.