Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] HTTP Request: mit Java funktionierts, mit PHP nicht

Einklappen

Neue Werbung 2019

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

  • [Erledigt] HTTP Request: mit Java funktionierts, mit PHP nicht

    Hallo,

    Ich würde gerne mit PHP eine Seite aufrufen, um deren Inhalt zu parsen. Ich habe es mit folgendem Code versucht:

    PHP-Code:
    function GetHttp()
    {
        do {
            
    $fp fsockopen("example.com"80);
        } while(!
    $fp);
        
    fputs($fp"GET / HTTP/1.1\r\n");
        
    fputs($fp"Host: example.com:23575\r\n");
        
    fputs($fp"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\r\n");
        
    fputs($fp"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
        
    fputs($fp"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
        
    fputs($fp"Keep-Alive: 300\r\n");
        
    fputs($fp"\r\n");

        while(!
    feof($fp))
          
    $res .= fgets($fp128);
          
        
    fclose($fp);
        return 
    $res;
    }

    echo 
    GetHttp(); 
    Zurück geliefert wird nur der HTTP-Header, aber kein Inhalt...

    Wenn ich das Ganze mit Java umsetze, klappt es:

    Code:
    public static void main( String[] args ) throws Exception{
    		URL requestUrl = new URL("http://server6.digital-webstream.de:23575/");
            
    		URLConnection con = requestUrl.openConnection();
    		con.setRequestProperty("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    		con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3");
    		con.setRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
    		
    		con.connect();
    
    		BufferedReader in = new BufferedReader(
    					new InputStreamReader(
    					con.getInputStream()));
    					
    		String decodedString;
    
    		while ((decodedString = in.readLine()) != null) {
    		    System.out.println(decodedString);
    		}
    		in.close();
    
    		
    	}
    Meiner Meinung nach, sollten da die gleichen Header gesendet werden. Habe ich einen Denkfehler gemacht?

    Thoresus

    PS: natürlich wird eine andere Seite als example.com aufgerufen...


  • #2
    hab mir dein php script jetzt nicht angesehen, aber vllt hilft dir das weiter:

    PHP-Code:
    $ch curl_init("http://www.example.com/");
    $fp fopen("example_homepage.txt""w");

    curl_setopt($chCURLOPT_FILE$fp);
    curl_setopt($chCURLOPT_HEADER0);

    curl_exec($ch);
    curl_close($ch);
    fclose($fp); 
    http://www.php.net/manual/de/curl.examples-basic.php

    gute nacht - meld mich morgen nochmal und teste dein snippet - falls es nicht jemand anderes schon tut

    Kommentar


    • #3
      Hi,

      Zurück geliefert wird nur der HTTP-Header, aber kein Inhalt...
      bei funktioniert dein Script richtig, also es wird header und content ausgegeben.

      HTML-Code:
      HTTP/1.1 200 OK
      Date: Sat, 01 May 2010 08:34:34 GMT
      Server: Apache/2.2.3 (CentOS)
      Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT
      ETag: "24ec5-1b6-4059a80bfd280"
      Accept-Ranges: bytes
      Content-Length: 438
      Connection: close
      Content-Type: text/html; charset=UTF-8
      
      <HTML>
      <HEAD>
        <TITLE>Example Web Page</TITLE>
      </HEAD> 
      <body>  
      <p>You have reached this web page by typing &quot;example.com&quot;,
      &quot;example.net&quot;,
        or &quot;example.org&quot; into your web browser.</p>
      
      <p>These domain names are reserved for use in documentation and are not available 
        for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC 
        2606</a>, Section 3.</p>
      </BODY>
      </HTML>

      Kommentar


      • #4
        Ja, das habe ich auch gerade bemerkt

        Dann liegt es wohl daran, dass ich auf dem anderen Server einen anderen Port ansprechen will, als den 80iger... Ich probier mal weiter. Hat jemand sowas schon mal gemacht? (einen anderen Port angesprochen)

        Thoresus

        Kommentar


        • #5
          Wo liegt das Problem?
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Zitat von Thoresus Beitrag anzeigen
            Ja, das habe ich auch gerade bemerkt

            Dann liegt es wohl daran, dass ich auf dem anderen Server einen anderen Port ansprechen will, als den 80iger... Ich probier mal weiter. Hat jemand sowas schon mal gemacht? (einen anderen Port angesprochen)

            Thoresus
            Schau mal bei deinem Code folgende Zeile an:
            PHP-Code:
            $fp fsockopen("example.com"80); 
            Das sollte alles erklären, wie man einen anderen Port als den 80er anspricht.

            PS: Den Host musst du natürlich dann auch noch entsprechend ändern.
            mysql ist veraltet Mails senden: Ohne Probleme und ohne mail()
            PHP-Code:
            echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>'

            Kommentar


            • #7
              Habe ich auch schon gedacht, aber es funktioniert immer noch nicht. ich bekomme immer eine Fehlermeldung:
              Code:
              Warning: fsockopen() [function.fsockopen]: unable to connect to server6.digital-webstream.de:23575 (Connection timed out)
              Ich weiss nicht, was ich noch probieren könnte.

              Kommentar


              • #8
                Was hast du du eingegeben? Das hier?
                $fp = fsockopen("server6.digital-webstream.de:23575", 80);

                Versuch es mal so:
                $fp = fsockopen("server6.digital-webstream.de", 23575);
                mysql ist veraltet Mails senden: Ohne Probleme und ohne mail()
                PHP-Code:
                echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>'

                Kommentar


                • #9
                  Ja ja, das habe ich schon probiert.

                  Hier die aktuelle Version meines Skripts:
                  PHP-Code:
                  function GetHttp()
                  {
                      do {
                          
                  fsockopen("server6.digital-webstream.de"23575);
                      } while(!
                  $fp);
                      
                  fputs($fp"GET /index.html HTTP/1.1\r\n");
                      
                  fputs($fp"Host: server6.digital-webstream.de:23575\r\n");
                      
                  fputs($fp"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\r\n");
                      
                  fputs($fp"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
                      
                  fputs($fp"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
                      
                  fputs($fp"Keep-Alive: 300\r\n");
                      
                  fputs($fp"\r\n");

                      while(!
                  feof($fp))
                        
                  $res .= fgets($fp128);
                        
                      
                  fclose($fp);
                      return 
                  $res;
                  }

                  echo 
                  GetHttp(); 
                  Die Antwort:

                  Code:
                  Warning: fsockopen() [function.fsockopen]: unable to connect to server6.digital-webstream.de:23575 (Connection timed out)

                  Kommentar


                  • #10
                    PHP-Code:
                     do {
                            
                    fsockopen("server6.digital-webstream.de"23575);
                        } while(!
                    $fp); 
                    Wo soll denn $fp herkommen, Deiner Meinung nach?
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Uups, hab ich wohl in der Eile vergessen Es sieht eher so aus:

                      PHP-Code:
                       do {
                              
                      $fp fsockopen("server6.digital-webstream.de"23575);
                          } while(!
                      $fp); 
                      Aber leider ändert auch das nichts... Ich glaub, ich muss ne andere Lösung finden. Oder hat noch jemand ne Idee?

                      Kommentar


                      • #12
                        Firewall?
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Danke! Du hast Recht. Wenn ich das Skript lokal ausführe, läuft es problemlos. Wenn ich es aber auf meinem Webserver ausführen lasse, geht es nicht

                          Ich werd mich mal nach anderen Lösungen umsehen oder es vergessen...

                          Vielen Dank an alle, die sich meinetwegen umsonst die Mühe gemacht haben

                          Kommentar

                          Lädt...
                          X