fsockopen + gzip?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fsockopen + gzip?

    Moinsen!

    Ich möchte mittels fsockopen eine XML datei von discogs.com einlesen. Diese Datei wird gzip komprimiert versendet, also muss der Empfänger mit gzip umgehen können.

    Nun habe ich also folgenden Code (Textweise):
    PHP-Code:
            $fp fsockopen(self::$hostself::$port, &$errno, &$errstr);
            if(
    $fp) {
                
    $send "GET ".$args." HTTP/1.1\r\n";
                
    $send .= "Host: ".self::$host."\r\n";
                
    $send .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8) Gecko/20051107 Firefox/1.5\r\n";
                
    $send .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
                
    $send .= "Accept-Language: de,en;q=0.7,en-us;q=0.3\r\n";
                
    $send .= "Accept-Encoding: gzip,deflate\r\n";
                
    $send .= "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
                
    $send .= "\r\n";
                
    fputs($fp$send);
                
    ob_start();
                while(!
    feof($fp))  {
                    echo 
    fgets($fp,128);
                }
                
    $content ob_get_contents();
                
    ob_end_clean();
                return 
    $content;
            } 
    Als Ausgabe erhalte ich nun:
    PHP-Code:
    HTTP/1.1 200 OK
    Date
    Thu17 Sep 2009 12:21:46 GMT
    Server
    Apache
    Set
    -Cookiesid=...; path=/; expires=Sun15-Sep-2019 12:21:46 GMTdomain=.discogs.com
    Content
    -Typetext/xmlcharset=utf-8
    Content
    -Encodinggzip
    Content
    -Length639
    Connection
    close

    LAUTER WIRRE UND KOMISCHE ZEICHEN 
    Und an genau dieser Stelle komm ich nun nicht weiter. Ich hab schon n bissl rumgegoogled und mit fsockopen rumgespielt, jedoch ohne Erfolg. Wie komm ich nun an die gewünschte XML?

    Danke schonmal

  • #2
    Hallo,

    du forderst den Server ja geradezu auf, das gzipped zu verschicken (die komischen Zeichen sind der gepackte XML-Code):

    Zitat von PHPler Beitrag anzeigen
    PHP-Code:
                $send .= "Accept-Encoding: gzip,deflate\r\n"
    Nimm doch den Accept-Encoding-Header einfach raus.

    Ansonsten ist ein Blick auf cURL empfehlenswert. Damit brauchst du dich ohnehin nicht um das Content-Encoding der Response Entity kümmern und bekommst gleich die Nutzdaten geliefert.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Ohne Accept-Encoding wolltes auch nicht. Mit cURL funzt nu, hab bislang irgendwie immer gedacht ich müsstes zusätzlich installieren und hab nirgendswo gute Infos gefunden. Aber das ist ja beim Server schon mit bei...

      Werd das wohl von jetzt an nu immer einsetzen. Danke

      Kommentar

      Lädt...
      X