GZIP entpacken

Hi Leute ich habe mal wieder ein Problem bei dem ich einfach nicht weiter komme.

Ich habe einen Socket erstellt und damit einem PHP-Server ein POST gesendet nun empfange ich seine Antwort im gzip Format.
Ich weiss ich könnte ihm das POST auch einfach mit der anfrage deflat schicken und das ganze nicht gepackt empfangen, aber dabei enstehen Fehler im empfangen Content (keine Ahnung warum) nun die Frage wie entpacke ich das ganze?

Code:
InputStream inputStream = socket.getInputStream();
      GZIPInputStream GinputStream = new GZIPInputStream(inputStream);

Dies war der erste Schritt den ich gemacht habe den InputStream holen ist ja kein Problem aber wenn ich das in den GZIPInputStream legen will bekomme ich die Exception

java.io.IOException: Not in GZIP format

Wie soll ich das verstehen und entpacken denn das Empfangene is definitiv im GZIP format
 
Jetzt kommt der Hammer wo mein Verständniss komplett aussteigt.
Ich habe den GZIP anteil aus dem Empfangen in einen String geschrieben.
Diesen ganz simpel in eine Datei geschrieben und diese mithilfe von GZIPInputStream wieder eingelesen.
Das klappt tatsächlich aber ist ja nich gerade das Gelbe von Ei also hab ich versucht den String mithilfe von
InputStream istemp = new ByteArrayInputStream(ziptext.getBytes());
in ein InputStream verfrachtet um diesen Stream mit dem GZIPInputStream zu entpacken und da wirft er wieder die Exception
java.io.IOException: Not in GZIP format

Was also tun? Ich kann doch nich jedes mal den Krempel erst in eine Datei schreiben.
 
Ja das weiss ich ja. Den Header Teil hab ich ja abgeschnitten und als Datei gespeichert damit ich Diese mit GZIP öffnen kann.
Die Frage ist wie kann ich diesen Kompremierten Teil ohne ihn vorher in eine Datei zu schreiben entpacken?
 
Das ist leider auch nicht der Fall.
Ich habe meinen Netzwerktraffic mitgeschnitten und da kommt das Packet in einem rutsch an und hat nur einen Header und wenn ich den abschneide hilft das auch nicht.

Also stellt sich immernoch die Frage wie ich den socket.getInputStream(); in den GZIPInputStream bekomme ohne das die Exception kommt das dies kein GZIP Format ist.
 
Poste uns doch mal den kompletten Header bitte.
Ich bin immer noch der Meinung, dass das ganze im Transfer-Encoding "chunked" verschickt wird, wodurch du beim body selbst nochmal ein paar Dinge abschneiden musst.
 
das ganze schaut dann ungefär so aus

Code:
HTTP/1.1 200 OK
Date: Mon, 25 Feb 2008 17:10:23 GMT
Server: Apache/2.0.59 (Unix) PHP/4.4.4
X-Powered-By: PHP/4.4.4
connection: close
cache-control: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 1034
Content-Type: text/html
X-Pad: avoid browser bug

‹      ¥VÛnÛ8}N€ü«Å:`ëbËv‹îK[ íb[lìc@‰#‰‰L)"e;-úçûС¤Èqš,6X²ÉÑçrffz¯NŽŽÂoVG¡:‡ÕeÉbðoɇ¼Ðdè´âVe
š‘LërwµØP+.$*é±¾/Á"ÝŽZvÚ1F–$ÎX¥@Ó—_Æçç³`ìYÝa*®D©‰vˆ¶aÔ"ªŠ©1ö²V¡ÓÊ;h.ä-© §Jßç 2€îœæ˜X)’UPKgœ”ÁFaoØ€õ#m5ŽšÐ8}l¨à÷ÄèRë·Í¯£«PBÍ"<n+¸Îèlæ’òÜ2¥í®dœ·»(‹¼¨h”³ø–Æ&µÊB	-
y‘ˆð%É!Ñþ¢Ü-ÑŒ6&8É@¤™¦¾ÿ`å"•´½Ä›í]<×ý½‡jçL)¯Â¨_¾
äEèD	ÍÿäZY¯_ºª0u[\Cõ:àß
Fé"IƽÖÅVSg+ϵgø¸®KB±N›Rj+wÎ_Þg;ÉÞróí`:±Ïç³ga“—`Þ¿Z›¾[ؾ·°ƒ…ÿ,Ìk¼tš´?ÙDÕþéø”3™Ö,Ųú„tºlé´Jj›#†:׺¸6¤(ÙýðŒ|'V	Ûë„bõH^lí¢9<5dWŽ³ÝníbspÞ+”à s²êã;ê
jÕ,o>0š¸L·³AZº™@+êMÜi0üÉtg·ª^S‚ 
"¬Ô`âò˜óy<ç°˜ÇøÉÔwOG§_™ü©@‰oÆgzj„®yagi¶k5n¨,Fº(òn©4Óu«ð@ˆ‰?êx´˜Ÿ£nIÝ‘!uOÏ–G]줈k5<[’}Û	“¢ZÖ„ZIÓí2+-"ÑUjUÊ"س¥Lp²S½³0Þy+׃„q™?>?ŸÅ|æų9ây2ŸÀÎ[ì&³7·úü¶§|Ú·JlQ}vuŤ*‹J7ym+è›!G0HÚ®”7²ÛP}|üªòl.”‰2§òÉòér/Æ“ãGýûi¿lDƒÓÄ$ô¬ï¦Ð?R_Ä™Þóá•íQ«u}¿–BolMŠÞÞÑ×úW›Ì˜Ìí>wÛ?¡†np’oµbkˆÒØš›9zЮ_ûèQX³•Æa†DÜ‚)VÍ%ÜÖ’7'd‡ì?9&Ä<¿2ÿæ :PãÍxl~û:‘8ˆgߌ<>/bf^Úÿ?†Ksðó…£ÿJ¬¡¨õÐjZ#2ÅfyÖè8Û+î+„3}ÍÌ5Ó7lþH¬~ÖR©´
 
Hm. Der Verdacht auf Transfer-Encoding: Chunked ist damit vom Tisch.

Nimmst du auch exakt die in Content-Length angegebenen 1034 Bytes?
Eventuell nimmst du die den Header abshcliessende Leerzeile mit rein?
Wie liest du die HTTP_Response ein und verarbeitest sie weiter, bevor sie per GZIP dekomprimiert werden soll?

Eventuell ein Beispielcode, wie das bei dir im Programm aussieht?
 
Zurück