Ich habe gerade Ihre Frage gesehen und war neugierig darauf. Also habe ich meinen eigenen Testfall gemacht. Ich verließ das alle Servlets verwandten Themen aus dem Problem und codiert etwas wie folgt aus:
import java.io.*;
import java.util.zip.GZIPOutputStream;
public class GZIPTestcase {
public static void main(String[] args) throws Throwable {
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(new FileOutputStream(new File("/Users/malax/foo2.gz")));
PrintWriter pw = new PrintWriter(gzipOutputStream);
pw.println("All your base are belong to us!");
pw.flush();
pw.close();
}
}
Die GNU gunzip der Lage war, um die Daten zu dekomprimieren. Dann versuche ich es mit PHP zu entpacken. Es ist mit demselben Fehler gescheitert, den Sie bekommen haben. Ich untersuchte weiter und fand die folgenden Methoden:
gzinflate funktioniert auch nicht, ist gzdecode nur mit PHP6 wich ausgeliefert i installiert havn't. Vielleicht könntest du das versuchen. (Nach http://bugs.php.net/bug.php?id=22123 wird das funktionieren)
Ich bezweifle, dass das Problem auf der Java-Seite ist, weil GNUs gunzip die Daten deflationieren kann, damit es korrekt sein muss. Vielleicht möchten Sie auf der PHP-Seite weiter untersuchen.
Es gibt eine realte Frage für .NET und PHP, wo das ursprüngliche Poster das gleiche Problem hat wie Sie: Can PHP decompress a file compressed with the .NET GZipStream class?. PHP scheint auch nicht in der Lage zu sein, die Daten aus dem .NET-Äquivalent von GZIPOutputStream zu dekomprimieren.
Tut mir leid, dass ich keine "Lösung" habe, aber ich hätte Sie trotzdem in die richtige Richtung weisen können.
EDIT: Ich fand einen Eintrag in den PHP-Bugtracker, die das Problem erläutert: http://bugs.php.net/bug.php?id=22967 Es scheint, dass gzuncompress GZIP Daten mit Header kann nicht dekomprimieren, das wäre der GZIPOutputStream produziert werden. Wie im Bugtracker-Eintrag angegeben, versuchen Sie, die Kopfzeile zu beschneiden.
Erhalten Sie Fehler? Können Sie die Protokolle posten? – rogeriopvl
Stellen Sie sicher, dass Ihr Java-Code den HTTP-Header 'Content-Encoding: gzip' festlegt. – Asaph
Warnung: gzuncompress(): Datenfehler. Ich habe versucht, nur die Daten zu wiederholen, ohne zu versuchen, es zu dekomprimieren, um sicherzustellen, dass ich tatsächliche Daten bekomme, und ich bekomme einen Datenblock, der beginnt: [ Content Content-Encoding ist auf gZip auf eingestellt Java Side .. –