Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi probem : idhttp.get , stream und gzip (https://www.delphipraxis.net/146619-probem-idhttp-get-stream-und-gzip.html)

SeeAALi 23. Jan 2010 23:16


probem : idhttp.get , stream und gzip
 
Delphi-Quellcode:
lStream:=TFileStream.Create(ExtractFilePath(Application.ExeName)+'text.gz', fmCreate or fmOpenReadWrite);
idHTTP1.Get('http://www.foobar.com/index.html', lstream);
so damit hole ich mir die seite die ich haben will, das funktioniert auch. jetzt weiss ich , das der ganze mist per gzip , deflate gepackt ist. habe ich per winrar überprüft. ich habe echt schon stunden gegoogelt, hier im forum gesucht, aber ich bin zu blöd den kram in delphi zu entpacken. ich habe schon etliche zip komponenten(zipmaster, zlib, etc) durch, aber nirgends einen durchbruch.

also wenn mir evtl einer helfen könnte , dann wäre ich sehr dankbar, bin schon sehr stark am verzweifeln.
am liebsten hätte ich gerne das ergebnis in einem string oder ähnliches.

also wenn jemand einen lösungsvorschlag oder einen link hat , der mir weiter helfen könnte,echt das wäre toll :-)
von mir aus auch den umweg über datei auf platte.

mfg SeeAALi

fkerber 23. Jan 2010 23:46

Re: probem : idhttp.get , stream und gzip
 
Hi!

Am einfachsten wäre es wohl, wenn du die konkreten Probleme, die mit einer der Komponenten auftreten nennen würdest (mit Code etc) und dann könnte man versuchen das zu lösen.

Sonst kann ich nur das hier ans Herz legen:
http://www.delphi-treff.de/no_cache/...nten/delphizip

Vllt. hilft dir das weiter - es scheint aber eher für normales zip zu sein (das wäre auch bei den Komponenten die Frage - also ob sie gzip können)


Grüße, Frederic

Astat 23. Jan 2010 23:51

Re: probem : idhttp.get , stream und gzip
 
Zitat:

Zitat von SeeAALi
..der ganze mist per gzip , deflate gepackt ist. ... habe schon etliche zip komponenten(zipmaster, zlib, etc) durch, aber nirgends einen durchbruch.

Hallo SeeAALi, sollte mit zlib ohne Probleme funktionieren, ist derselbe Algorithmus.

Poste mal die gezipten Daten, womöglich ist da noch ein Encoding drinnen.

lg. Astat

SeeAALi 24. Jan 2010 02:38

Re: probem : idhttp.get , stream und gzip
 
sorry, im anfall des frustes , wohl die hälfte vergessen :-D

Code:
[GET /lagerfuellen/ HTTP/1.1  Host: [url]www.foobar.com[/url] User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB6  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3  Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7  Keep-Alive: 300  Connection: keep-alive Referer: [url]http://www.foobar.com/premiumstart/[/url] Cookie: __utma=262524630.83278421.1257146671.1264154885.1264161360.260; __utmz=262524630.1257490593.18.3.utmcsr=slye.de|utmccn=(referral)|utmcmd=referral|utmcct=/; PHPSESSID=0ebb33a71043434fe1bbbd1451cb38f7; __utmc=262524630; __utmb=262524630.6.10.1264161360    ]
---------------------------
www-http       0 ACK
---------------------------
www-http    1452 [HTTP/1.1 200 OK Date: Fri, 22 Jan 2010 12:52:59 GMT Server: Apache X-Powered-By: PHP/4.4.9  Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0  Pragma: no-cache Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 4441  Keep-Alive: timeout=1, max=99  Connection: Keep-Alive Content-Type: text/html    ‹        Ý\[sÛF–~Vªò Ú˜Š%MB‚ $H–H¦lËv¼±=^ËIfæEÕ$š$B°ÁÁE”å¸jèVíK~Ã<ÍÞîF Ý@ ¤.žõÆ™  Í>}î_Ÿ¾ƒ gyúþooŸ¡yº ÑÛŸž¼zù Y ÛþÅ}jÛgïÏÐ_xÿú êw{è}Œi ¤ADqhÛÏÞXÈš§éêĶ×ëuwív£xf¿g_±±úŒ8줠e×O}kôõW Îñj Òdh §ÿèÑ#A.: 쳿K’bÄzwÈ?²àrhÅd “dn¡IDSBÓ¡åöz§è§w¯† õÉU· ¢FúTPtÞX …>%W©Í¨NÑdŽã„¤Ã ‰:ÇLJ:} Ùl¬4HC2ú‘’`Eè / ú ½Â3 £éÃ, Ò0$t`‹nÐ? è Å$ ZIú! y I-” ãœß$I,4 e†V·ËÞlÞñb “e-»üs{4à*UÂÑ@ô Nì¿[  Ç‘ÿA<ùÁ% ü¡5Ž®,½%Yá ‰/B2MÙPЬÎ,ƒ JbA·S …ã‹4Z±æAŠÇ Ú:ðÓùÐê÷zßXh Å>‰Á%¬ Bƒ4æÙ“?zHÇÉê Œä+ ...to be continued
--------------------------
www-http       0 ACK
das ist das was ich bekomme , wenn ich normal über die seite navigiere....


Code:
[GET /lagerfuellen/index.html HTTP/1.1  Connection: keep-alive Content-Type: application/x-www-form-urlencoded Host: [url]www.foobar.com[/url] Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7  Accept-Encoding: gzip,deflate Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3  Referer: [url]http://www.foobar.com/lagerfuellen/[/url] User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB6  Cookie: PHPSESSID=653fd05d5228eb7f29ce39aaca8abdd8    ]
--------------------------------------
www-http       0 ACK
--------------------------------------
www-http    1452 [HTTP/1.1 200 OK Date: Fri, 22 Jan 2010 12:56:56 GMT Server: Apache X-Powered-By: PHP/4.4.9  Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0  Pragma: no-cache Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 4443  Keep-Alive: timeout=1, max=100  Connection: Keep-Alive Content-Type: text/html    ‹        Ý\[sÛF–~Vªò Ú˜Š%MB‚ $H–H¦lËv¼±=^ËIfæEÕ$š$B°ÁÁE”å¸jèVíK~Ã<ÍÞîF Ý@ ¤.žõÆ™  Í>}î_Ÿ¾ƒ gyúþooŸ¡yº ÑÛŸž¼zù Y ÛþÅ}jÛgïÏÐ_xÿú êw{è}Œi ¤ADqhÛÏÞXÈš§éêĶ×ëuwív£xf¿g_±±úŒ8줠e×O}kôõW Îñj Òdh §ÿèÑ#A.: 쳿K’bÄzwÈ?²àrhÅd “dn¡IDSBÓ¡åöz§è§w¯† õÉU· ¢FúTPtÞX …>%W©Í¨NÑdŽã„¤Ã ‰:ÇLJ:} Ùl¬4HC2ú‘’`Eè / ú ½Â3 £éÃ, Ò0$t`‹nÐ? è Å$ ZIú! y I-” ãœß$I,4 e†V·ËÞlÞñb “e-»üs{4à*UÂÑ@ô Nì¿[  Ç‘ÿA<ùÁ% ü¡5Ž®,½%Yá ‰/B2MÙPЬÎ,ƒ JbA·S ... to be continued
www-http       0 ACK
und das ist das was ich bekomme, wenn ich über mein tool navigiere.
so wie oben die beiden zeilen. habs auch mit einem TMemorystream versucht.

sourcecode für das decrompressing bekomme ich im moment nicht mehr zusammen, habe zuviele sachen probiert :-D
ich habs überprüft mit winrar, es ist genau das was ich will, es ist nur ganz doof "verschlüsselt" :-D


und noch mal schnell hinzugefügt :

so hab ich es mal versucht. ich lass mir nur die grösse anzeigen, damit ich sehen kann, ob überhaupt etwas in dem stream drin ist. ichhabe ZlibEX benutzt, weil Zlib nicht läuft,weil mir irgendwelche *.obj datein fehlen.
Delphi-Quellcode:
var
 DeCompressionStream: TZDecompressionStream;
 bstream : TMemorystream
begin
 bstream := TMemorystream.Create;
 try
  idHTTP1.Get('http://www.foobar.com/index.html', bstream);
  memo1.Lines.Add(floattostr(bstream.size)); //grösse 4025
 finally
  DecompressionStream := TZDecompressionStream.Create(bstream);
  memo1.Lines.Add(floattostr(decompressionstream.size)); //grösse 0
 end;
 
 DecompressionStream.Free;
 bstream.free;

Astat 24. Jan 2010 03:52

Re: probem : idhttp.get , stream und gzip
 
Hallo SeeAALi, versuch mal folgendes.

Delphi-Quellcode:
 
bstream.seek(0, 0);
DecompressionStream := TZDecompressionStream.Create(bstream);
Wenn dass nicht hilft, lade die von dir erzeugte "text.gz" Datei hoch.

Astat

SeeAALi 24. Jan 2010 08:50

Re: probem : idhttp.get , stream und gzip
 
Liste der Anhänge anzeigen (Anzahl: 1)
so da ist einmal meine .gz datei.

Astat 24. Jan 2010 13:03

Re: probem : idhttp.get , stream und gzip
 
Zitat:

Zitat von SeeAALi
so da ist einmal meine .gz datei.

Jupp, funkt tadellos.

Delphi-Quellcode:

var
  ms, msOut: TMemoryStream;
begin
  ms := TMemoryStream.Create;
  ms.LoadFromFile('C:\Lazarus\test\text.gz');
  ms.Seek(0, 0);
  msOut := TMemoryStream.Create;
  IdCompressorZLib1.DecompressGZipStream(ms, msOut);
  msOut.SaveToFile('C:\Lazarus\test\text.txt');
end.

lg. Astat

SeeAALi 24. Jan 2010 14:14

Re: probem : idhttp.get , stream und gzip
 
Delphi-Quellcode:
IdCompressorZLib1.DecompressGZipStream(ms, msOut);
sind das bezeichner aus ZLib ?! Ich habe nämlich nur ZLibEX (Delphi Fast ZLib) zum laufen bekommen, weil mir für die ZLib 2 Dateien fehlen. Das sind unteranderem die "compress.obj" und die "crc32.obj" .

Die sind ja eigentlich in dem Paket mit beim, als C Source (soweit ich das erkennen kann). Die Datei make_vms.com verursacht nämlich einen CPU Fehleroder ähnliches, so das sie nicht ausgeführt wird. ( Die NTVDM-CPU hat einen ungültigen Befehl entdeckt).

Kannst du mir evtl die beiden Dateien hier mal mit beifügen ?!

mfg AAL


P.S. Wenn ich das dann richtig verstehe, muss ich ja dann gar nicht mehr den Umweg über die Platte gehen, oder doch ?!
Wenn ich sage das ms der Stream ist den ich von idHTTP1.Get bekomme, oder nicht?! Das Gleich dann im Prinzip doch dann
mit der Ausgabe

Astat 24. Jan 2010 14:22

Re: probem : idhttp.get , stream und gzip
 
Zitat:

Zitat von SeeAALi
Delphi-Quellcode:
IdCompressorZLib1.DecompressGZipStream(ms, msOut);
sind das bezeichner aus ZLib ?!

Nein, ist aus den Indy Komponenten die TIdCompressorZLib.

Astat

SeeAALi 24. Jan 2010 14:27

Re: probem : idhttp.get , stream und gzip
 
ok ich sehe ich muss dann wohl mal mein INDY updaten :-D

bei dem was ich dabei habe , gibt es die Komponente nicht :-)

ich danke dir aber schon mal sehr für deine hilfe, wenn ich die Kompo habe, wird es sicherlich gehen :-)

mfg AAL


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz