file($url) geht, fsockopen($url) nicht

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

  • file($url) geht, fsockopen($url) nicht

    Hallo,

    wieso funktioniert dieser Aufruf und liefert Daten der URL zurück?

    PHP-Code:
    $x implode("",file("http://www.ucl.volvocars.de/de/de/ucl/ucl_detail_car.asp?DPMarket=de&DPLanguage=de&site_scope=4&site_scope_option=-1&detail_direct=true&vehicle_no=32031967")); 
    Und warum liefert dieser Code einen "Bad Request" zurück?

    PHP-Code:
    $domain "www.ucl.volvocars.de";

    $sock=fsockopen($domain,80);

    if(
    $sock)
            
    {

    fputs($sock,"GET /de/de/ucl/ucl_detail_car.asp?DPMarket=de&DPLanguage=de&site_scope=4&site_scope_option=-1&detail_direct=true&vehicle_no=32031967 HTTP/1.0\n");
    fputs($sock,"Host: ".$domain."\n");
    fputs($sock,"Referer: http://www.irgendwas.de\n");
    fputs($sock,"User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT5.1)\n");

    while(!
    feof($sock)){$header.=trim(fgets($sock,128));}

    fclose($sock);

    echo 
    $header;


    Die Domain ist jetzt nur ein Beispiel (zum Testen perfekt geeignet), habe das Problem auch noch bei anderen URLs...

    Die POST-Methode habe ich auch schon probiert, daran liegt es nicht...

  • #2
    Re: file($url) geht, fsockopen($url) nicht

    Unter der genannten Adresse wird lediglich eine 301-Weiterleitung zurückgeliefert.

    fopen folgt einer solchen m.W. automatisch, fsockopen aber nicht - da wäre es deine Aufgabe, die Antwort zu interpretieren und entsprechend zu reagieren.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Wenn ich Requests senden muss, um Informationen von, bzw. über einen Webserver zu bekommen, verwende ich Snoopy, eine sehr flexible Klasse, die mit der CURL extension für PHP auch SSL- fähig ist.

      http://sourceforge.net/projects/snoopy/

      GreeZ
      Zuletzt geändert von rACT; 18.10.2006, 20:00.

      Kommentar


      • #4
        Funktioniert leider auch nicht :-( Da kommt nur einer 404 als Ergebnis:

        PHP-Code:
            include "Snoopy.class.php";
            
        $snoopy = new Snoopy;
            
                
            if(
        $snoopy->fetch("http://www.ucl.volvocars.de/de/de/ucl/ucl_detail_car.asp?DPMarket=de&DPLanguage=de&site_scope=4&site_scope_option=-1&detail_direct=true&vehicle_no=32031967"))
            {
                echo 
        "response code: ".$snoopy->response_code."<br>\n";
                while(list(
        $key,$val) = each($snoopy->headers))
                    echo 
        $key.": ".$val."<br>\n";
                echo 
        "<p>\n";
                
                echo 
        "<PRE>".htmlspecialchars($snoopy->results)."</PRE>\n";
            }
            else
                echo 
        "error fetching document: ".$snoopy->error."\n"
        PS: Den Host in der Klasse habe ich natürlich angepasst.

        Kommentar


        • #5
          Brich bitte deinen Code um! Bist lange genug dabei hier, um das zu wissen.

          Original geschrieben von Truncate
          Funktioniert leider auch nicht :-( Da kommt nur einer 404 als Ergebnis
          Ja - korrekt.

          Die eigentliche Adresse macht einen Redirect - blöderweise nicht mit einem absoluten URL, wie vorgeschrieben, sondern nur auf errorpage.asp?DPMarket=de&DPLanguage=de&site_scope_option=-1

          Und was liefert diese Adresse?

          Eben, einen 404 Statuscode nebst zugehörigem ErrorDocument.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar

          Lädt...
          X