Frage

Ich mag ein rohes http-Paket an einen Webserver senden und seine Antwort zu empfangen, aber ich kann nicht einen Weg, es zu tun, herauszufinden. im inexperianced mit Steckdosen und jeder Link finde ich Sockets verwendet UDP-Pakete zu senden. jede Hilfe wäre toll.

War es hilfreich?

Lösung

Schauen Sie sich auf diesem einfachen Beispiel aus dem fsockopen Manpage :

<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

Die Verbindung zum Server wird mit fsockpen etabliert. $out hält die HTTP-Anforderung, ist dann mit frwite senden. Die HTTP-Antwort wird dann gelesen mit fgets.

Andere Tipps

Wenn alles, was Sie tun möchten, ist eine GET-Anforderung durchführen und den Körper der Antwort erhalten, die meisten der Dateifunktionen unterstützen mit Urls:

<?php

$html = file_get_contents('http://google.com');

?>

<?php

$fh = fopen('http://google.com', 'r');
while (!feof($fh)) {
    $html .= fread($fh);
}
fclose($fh);

?>

Für mehr als einfache GETs, verwenden curl (Sie haben es in PHP zu kompilieren). Mit curl können Sie tun, POST und HEAD-Anfragen sowie Set verschiedene Header.

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://google.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$html = curl_exec($ch);

?>

ist cURL einfacher als Implementierung Client-Seite HTTP. Alles, was Sie tun müssen, ist ein paar Optionen gesetzt und cURL übernimmt den Rest.

$curl = curl_init($URL);
curl_setopt_array($curl,
    array(
        CURLOPT_USERAGENT => 'Mozilla/5.0 (PLAYSTATION 3; 2.00)',
        CURLOPT_HTTPAUTH => CURLAUTH_ANY,
        CURLOPT_USERPWD => 'User:Password',
        CURLOPT_RETURNTRANSFER => True,
        CURLOPT_FOLLOWLOCATION => True
        // set CURLOPT_HEADER to True if you want headers in the result.
    )
);
$result = curl_exec($curl);

Wenn Sie einen Header festlegen müssen, die cURL nicht unterstützt, verwenden Sie die CURLOPT_HTTPHEADER Option, eine Reihe von zusätzlichen Header übergeben. Stellen Sie CURLOPT_HEADERFUNCTION auf einen Rückruf, wenn Sie Header analysieren müssen. Lesen Sie die Dokumentation für curl_setopt für weitere Optionen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top