Volker: HTTP Contend encoding gzip => decomprimieren

hallo,

eine webseite sendet ihren content im gzip format, auch ein nicht akzeptieren von gzip via umgebauten header ändert nichts daran. wie bekomme ich den content wieder lesbar? Decompress gibt undef zurück.

my $ua = new LWP::UserAgent;
my $request = new HTTP::Request('GET', $url);
$response = $ua->request($request);
print decompress($response->content());

hat jemand eine idee?
gruss volker

  1. Hi!

    my $ua = new LWP::UserAgent;
    my $request = new HTTP::Request('GET', $url);
    $response = $ua->request($request);
    print decompress($response->content());

    hat jemand eine idee?

    Soweit ich mich erinnere wird bei "Contend-Encoding: gzip" in die ersten 10 Byte irgendwelche Zusatzinformationen geschrieben, das heißt Du musst die ersten 10 Zeichen aus dem gz-String entfernen, und erst dann (den Rest) dekomprimieren. Ich kenne mich mit den PERL-Funktionen/Modulen nicht aus, in PHP verwendet man glaube ich nicht decompress sondern gzinflate, vielleicht ist das in PERL ja auch was anderes.

    Grüße
    Andreas

    1. hi!

      also ich habe mal probier zwischen 0 und 50 byte vorher abzuschneiden, leider kein erfolg. uncompress is in dem modul übrigens eine hochfunktion von inflate, wo man keine objekte mehr anlegen muss und so. habe auch inflate ausprobiert, wieder mit vorherigem abschneiden, klappt auch nicht...

      irgendjemand eine idee?

      gruss volker

      1. also ich habe mal probier zwischen 0 und 50 byte vorher abzuschneiden, leider kein erfolg. uncompress is in dem modul übrigens eine hochfunktion von inflate, wo man keine objekte mehr anlegen muss und so. habe auch inflate ausprobiert, wieder mit vorherigem abschneiden, klappt auch nicht...

        Wenn Dein Perl kein eingebautes gzip bietet, schick den Kram an gzip. Das Programm gibt's für so ziemlich jede Plattform.

        gzip:    http://www.faqs.org/rfcs/rfc1952.html
        deflate: http://www.faqs.org/rfcs/rfc1951.html
        zlib:    http://www.faqs.org/rfcs/rfc1950.html

        Gruß,
          soenk.e

        1. hallo,

          gunzip bricht ab mit der meldung "unknown suffix -- ignored".

          vielleicht fehlt der suffix (die 10 byte) ja auch. kann man die davorschreiben, wer weiss wie?

          gruss volker

          1. gunzip bricht ab mit der meldung "unknown suffix -- ignored".

            vielleicht fehlt der suffix (die 10 byte) ja auch.

            Ein Suffix hängt hinten dran. Das, was Du (wahrscheinlich) mit den "10 Bytes" meinst, hängt vorne vor, ist also - wenn überhaupt - ein Präfix.

            gunzip beschwert sich hier lediglich darüber, daß die ihm angebotene Datei nicht mit dem Anhängsel (Suffix) .gz endet. Benenne die Datei um.

            Gruß,
              soenk.e

        2. Hi Sönke,

          Wenn Dein Perl kein eingebautes gzip bietet,

          http://search.cpan.org/dist/Compress-Zlib/

          (u. a. in http://www.schroepl.net/projekte/gzip_cnc/install.htm#program verwendet)

          Viele Grüße
                Michael

          --
          T'Pol: I apologize if I acted inappropriately.
          V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
          (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
          Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.