Intereting Posts
Отображение текста (например, оценка), который изменяется на каждом кадре Как setOnclickListener () на кнопке внутри ListView? Когда следует getItemPosition рассматривать изменения позиции позиции? Стоимость вызова метода на Android Android перестает закрывать приложение Какой размер должен быть фоном для экранов ldpi, mdpi, hdpi и xhdpi? Android progressBar не отображается Есть ли какое-то событие для обнаружения, когда экран тускнеет? Настройте размер значка кнопки плавающего действия (fab) Проблема с быстрым прокруткой с помощью ListAdapter и SectionIndexer Выбранный цвет фона списка элементов неожиданно повторно используется после прокрутки списка на планшетах Android: getSupportActionBar () всегда возвращает null в библиотеке ActionBarSherlock Android выполняет оператор if, хотя он никогда не должен выполняться? Покупки в приложении, сделанные с помощью промо-кодов, возвращают пустую строку полезной нагрузки разработчика Как отключить GZipContent в Cloud Endpoints в Android

GZIPInputStream выдает неизвестный формат (магический номер 213c)

Хотя я использовал GZIPInputStream для сжатия байтов из Интернета, ошибка запуска программы выглядит следующим образом:

05-08 17:37:02.465: W/System.err(744): java.io.IOException: unknown format (magic number 213c) 05-08 17:37:02.465: W/System.err(744): at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:84) 05-08 17:37:02.465: W/System.err(744): at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:64) 05-08 17:37:02.475: W/System.err(744): at com.Android.Sample.TestActivity.onCreate(TestActivity.java:54) 05-08 17:37:02.475: W/System.err(744): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 05-08 17:37:02.475: W/System.err(744): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 05-08 17:37:02.475: W/System.err(744): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 05-08 17:37:02.475: W/System.err(744): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 05-08 17:37:02.475: W/System.err(744): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 05-08 17:37:02.475: W/System.err(744): at android.os.Handler.dispatchMessage(Handler.java:99) 05-08 17:37:02.475: W/System.err(744): at android.os.Looper.loop(Looper.java:123) 05-08 17:37:02.475: W/System.err(744): at android.app.ActivityThread.main(ActivityThread.java:3683) 05-08 17:37:02.475: W/System.err(744): at java.lang.reflect.Method.invokeNative(Native Method) 05-08 17:37:02.475: W/System.err(744): at java.lang.reflect.Method.invoke(Method.java:507) 05-08 17:37:02.475: W/System.err(744): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 05-08 17:37:02.475: W/System.err(744): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 05-08 17:37:02.486: W/System.err(744): at dalvik.system.NativeStart.main(Native Method) 

И мои коды:

 HttpGet request = new HttpGet("http://www.google.com"); HttpResponse response = new DefaultHttpClient().execute(request); HttpEntity entity = response.getEntity(); InputStream stream = entity.getContent(); InputStream zippedStream = new GZIPInputStream(stream); InputStreamReader reader = new InputStreamReader(zippedStream); BufferedReader buffer = new BufferedReader(reader); 

Если я просто использую

 InputStreamReader reader = new InputStreamReader(stream); 

Не сжимайте поток, все будет в порядке.

Перед получением входного потока необходимо проверить Content-Encoding . Если ответ закодирован в GZIP, используйте GZIPInputStream . Это мое решение, которое я использую в моем вызове API .

 InputStream responseStream = null; ... // receive response String encoding = connection.getHeaderField("Content-Encoding"); boolean gzipped = encoding!=null && encoding.toLowerCase().contains("gzip"); try { InputStream inputStream = connection.getInputStream(); if(gzipped) responseStream = new BufferedInputStream(new GZIPInputStream(inputStream)); else responseStream = new BufferedInputStream(inputStream); } catch(FileNotFoundException e) { // error stream InputStream errorStream = connection.getErrorStream(); if(gzipped) responseStream = new BufferedInputStream(new GZIPInputStream(errorStream)); else responseStream = new BufferedInputStream(errorStream); } ... // TODO: close stream 

Вы уверены, что вы получаете сжатие? Если вы получаете «неизвестный формат», это, безусловно, нет. Вы должны проверить заголовки ответов и соответственно включить GZIP.