Gast alexC++ Geschrieben 16. August 2010 Geschrieben 16. August 2010 Hallo, ich möchte eine seite aufrufen mit parametern welche mir dann ein ergebnis zurück liefert. mit diesem ergebnis (string oder xml-datei) will ich dann weiter arbeiten. kann mir einer erklären wie ich das anstelle? wäre nett! gruß alex Zitieren
flashpixx Geschrieben 16. August 2010 Geschrieben 16. August 2010 Lies die Daten, die die Seite liefert in einen String ein und verarbeite diesen. fsocketopen wäre dafür eine mögliche Funktion Zitieren
Gast alexC++ Geschrieben 16. August 2010 Geschrieben 16. August 2010 habe folgenden code: <?php echo "anfang"; $url = "http://192.168.1.108:8080/test/auth?user=aba&password=123"; $request = new HttpRequest($url, HttpRequest::METH_GET); echo "nach request"; $result = $request->send(); var_dump($result); echo "ende"; ?> nach request wird nicht ausgegeben, was habe ich denn noch nicht richtig? gruß Zitieren
Lucius Geschrieben 16. August 2010 Geschrieben 16. August 2010 Wahrscheinlich bricht das Script wegen einem Fehler vorher ab und du hast das error reporting aus. Schreib mal am anfang vom script: error_reporting(E_ALL|E_STRICT); Zitieren
Gast alexC++ Geschrieben 16. August 2010 Geschrieben 16. August 2010 habe error_reporting(E_ALL|E_STRICT); an den Anfang geschrieben. bekomme aber keine fehlermeldung ausgegeben. es steht nur "anfang" auf der seite. gruß Zitieren
Lucius Geschrieben 16. August 2010 Geschrieben 16. August 2010 (bearbeitet) Wenn ich das mache kommt: Fatal error: Class 'HttpRequest' not found in test/test.php on line 4 Edit sagt: Ich habe die Extension nicht Installiert, könnte bei dr das selbe sein. Guckst du hier: http://de3.php.net/manual/en/http.setup.php Bearbeitet 16. August 2010 von Lucius Zitieren
Gast alexC++ Geschrieben 16. August 2010 Geschrieben 16. August 2010 (bearbeitet) hallo, da müsste ich noch einige packete installieren. gibt es noch einen anderen weg an das "ergbnis" der seite zu kommen? es wird lediglich ein string zurück gegeben. ich probier mal fsockopen aus: folgende fehlermeldung erscheint: Unable to find the socket transport "http" - did you forget to enable it when you configured PHP? (550320020) gruß Bearbeitet 16. August 2010 von alexC++ Zitieren
etreu Geschrieben 16. August 2010 Geschrieben 16. August 2010 Hast du in deiner php-Konfiguration Zugriff auf sockets erlaubt? Zitieren
flashpixx Geschrieben 16. August 2010 Geschrieben 16. August 2010 Die Meldung besagt, dass er versucht via Socket eine "http" Verbindung aufzubauen und das geht nicht. Sockets liegen bildlich unterhalb der http Verbindung, d.h. Du musst alles (!) selbst erledigen. fsocketopen funktioniert wie ein Filestream, nur dass eben hier ein Hostname und ein Port, der in Deinem Fall 80 lautet, da http, verwendet wird. Du musst eben über den Socket den http Header senden, der das Script mit Parametern aufruft und die dann enthaltenen Daten empfängt, d.h. http Kommunikation nachbauen Alternativ würde ich HTTP_Client verwenden, das man aber installieren muss Zitieren
Gast alexC++ Geschrieben 16. August 2010 Geschrieben 16. August 2010 in der php.ini habe ich nur das hier gefunden: ; Default timeout for socket based streams (seconds) ; PHP: Laufzeit-Konfiguration - Manual default_socket_timeout = 60 und sockets für mysql. wo kann ich den zugriff auf sockets erlauben? Zitieren
Gast alexC++ Geschrieben 16. August 2010 Geschrieben 16. August 2010 (bearbeitet) error_reporting(E_ALL|E_STRICT); $url = "192.168.1.108/test/auth?user=abla&password=123"; $fp = fsockopen($url, 8080, $errno, $errstr, 1); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); } bekomme nun den fehler: php_network_getaddresses: getaddrinfo failed: Name or service not known (0) wenn ich die url in den browser gebe funktioniert es wunderbar Bearbeitet 16. August 2010 von alexC++ Zitieren
flashpixx Geschrieben 16. August 2010 Geschrieben 16. August 2010 (bearbeitet) php_network_getaddresses: getaddrinfo failed: Name or service not known (0) Du versucht auf Port 0 zu connecten und dort läuft kein passender Dienst wenn ich die url in den browser gebe funktioniert es wunderbar Du arbeitest bei einem Socket aber nicht auf URL Ebene sondern Du kennst nur (!) einen Host und einen Port. An einem Socket gibt keine URL wie in Deinem Fall Bearbeitet 16. August 2010 von flashpixx Zitieren
Gast alexC++ Geschrieben 16. August 2010 Geschrieben 16. August 2010 (bearbeitet) das würde ich verstehen, wenn ich beim port 0 angegeben hätte anstatt 8080 ok also kann ich da nur 192.168.1.108 angeben. und wie ruf ich dann die ensprechende seite auf, (mit pfadangabe) von der ich das ergebnis haben möchte? gruß Bearbeitet 16. August 2010 von alexC++ Zitieren
flashpixx Geschrieben 16. August 2010 Geschrieben 16. August 2010 und wie ruf ich dann die ensprechende seite auf, (mit pfadangabe) von der ich das ergebnis haben möchte? Indem Du das http Protokoll entsprechend nachbildest. Zitieren
Gast alexC++ Geschrieben 17. August 2010 Geschrieben 17. August 2010 Hallo, kannst du mir das bitte näher erklären, wenn es keine umstände macht. gruß Zitieren
flashpixx Geschrieben 17. August 2010 Geschrieben 17. August 2010 Du musst verstehen was ein Socket ist und dann eben darüber die Daten übertragen. Da Du hier einen http Server hast, musst Du eben die Spezifikation des Protokolls lesen und umsetzen, damit der Webserver die Anfrage verarbeiten kann. Du musst eben über den Socket einen passenden Header mit den Daten zur URL und Parametern übertragen und dann die Antwort lesen und verarbeiten Zitieren
Gast alexC++ Geschrieben 25. August 2010 Geschrieben 25. August 2010 kannst du mir das bitte kurz erläutern? mit puts()? gruß Zitieren
etreu Geschrieben 25. August 2010 Geschrieben 25. August 2010 Zum Anfragen einer Webseite schickst du einen GET-Request - wie der aussieht steht im entsprechenden RFC. Du erhälst eine Antwort mit einem Antwortcode. Neben weiteren Headern findest du auch den Inhalt der Datei. Zitieren
_n4p_ Geschrieben 25. August 2010 Geschrieben 25. August 2010 fsockopen is zwar schön und gut, und is auch alles richtig das man dann selbst header bauen muss und so weiter. aber warum? was spricht jetzt eigentlich gegen den einsatz von fopen, file oder file_get_contents? Zitieren
flashpixx Geschrieben 25. August 2010 Geschrieben 25. August 2010 was spricht jetzt eigentlich gegen den einsatz von fopen, file oder file_get_contents? Weil es hier nicht um Dateien geht, sondern um den Abruf von Daten eines Webservers, die per GET-Request angefordert werden Zitieren
_n4p_ Geschrieben 25. August 2010 Geschrieben 25. August 2010 das is mir klar ... $fileC = file_get_contents('http://www.google.de/search?q=php+file_get_contents'); echo '<pre>'.htmlentities($fileC).'</pre>'; [/PHP] und setzt man den stream context ist es auch möglich post daten mit zusenden. PHP: HTTP context options - Manual Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.