GZIPInputStream jette format inconnu (nombre magique 213c)
Alors que j'ai utilisé GZIPInputStream pour compresser octets obtenir à partir d'Internet, l'exécution de programmes d'erreur comme suit:
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)
Et Mes codes comme suit:
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);
Si je viens d'utiliser
InputStreamReader reader = new InputStreamReader(stream);
ne pas compresser le flux,il sera OK.
OriginalL'auteur Jake | 2012-05-08
Vous devez vous connecter pour publier un commentaire.
Vous devez vérifier Encodage de Contenu avant de recevoir des flux d'entrée. Si la réponse est codée en GZIP, utilisez GZIPInputStream. C'est ma solution, que j'utilise dans mon Les appels de l'API.
OriginalL'auteur petrnohejl
Êtes-vous sûr de ce que vous obtenez est compressé? Si vous obtenez 'format inconnu' il plus est certainement pas. Vous devriez vérifier les en-têtes de réponse et activer GZIP en conséquence.
OriginalL'auteur Nikolay Elenkov