Heim > Backend-Entwicklung > PHP-Tutorial > So senden Sie eine HTTP-Anfrage über einen Socket in PHP

So senden Sie eine HTTP-Anfrage über einen Socket in PHP

墨辰丷
Freigeben: 2023-03-29 18:46:01
Original
1814 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich vor, wie Sockets in PHP HTTP-Anfragen senden. Ich hoffe, dass er für alle hilfreich ist.

Socket-Modus:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
//socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array("sec"=>20, "usec"=>0));
socket_connect($socket, 'www.baidu.com', 80);
//里面的换行代表 \r\n 注意拷贝的代码后面可能有空格
$http = <<<eof
GET / HTTP/1.0
Accept: */*
User-Agent: Lowell-Agent
Host: www.baidu.com
Connection: Close
eof;
socket_write($socket, $http, strlen($http));
while($str = socket_read($socket, 1024))
{
  echo $str;
}
socket_close($socket);
Nach dem Login kopieren

fsockopen Methode :

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

stream Methode (get):

$http = <<<eof
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Cookie: BAIDUID=79D98B1AD8436C57B967E111E484F1CD:FG=1; BDUSS=lF-UFFOanFPVG92NmF4U3NiTEoxOFh4YVBCTnZaMUtoTUNhZmxrWThwN25IaUJVQVFBQUFBJCQAAAAAAAAAAAEAAADzo1gKc2lxaW5pYW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOeR-FPnkfhTU; BAIDUPSID=79D98B1AD8436C57B967E111E484F1CD; BD_UPN=13314352; BD_HOME=1; H_PS_PSSID=10047_1435_10874_10212_10501_10496_10753_10796_10219_10355_10666_10597_10095_10658_10442_10700_10460_10360_10618; sug=3; sugstore=0; ORIGIN=2; bdime=0
Connection: keep-alive
Cache-Control: max-age=0
eof;
$hdrs = array(
    &#39;http&#39; =>array(
        &#39;header&#39; => $http,
        &#39;timeout&#39;=>1, //超时 秒
        &#39;method&#39; => &#39;GET&#39;, //默认方式
         &#39;protocol_version&#39; => &#39;1.1&#39;, //默认为 1.0
    ),
);
$context = stream_context_create($hdrs);
echo file_get_contents(&#39;http://www.baidu.com&#39;, 0, $context);
Nach dem Login kopieren

Stream-Methodenbeitrag:

$postdata = http_build_query(array(&#39;act&#39;=>&#39;save&#39;, &#39;id&#39;=>387171));
$http = <<<eof
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 
Cookie: BAIDUID=79D98B1AD8436C57B967E111E484F1CD:FG=1; BDUSS=lF-UFFOanFPVG92NmF4U3NiTEoxOFh4YVBCTnZaMUtoTUNhZmxrWThwN25IaUJVQVFBQUFBJCQAAAAAAAAAAAEAAADzo1gKc2lxaW5pYW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOeR-FPnkfhTU; BAIDUPSID=79D98B1AD8436C57B967E111E484F1CD; BD_UPN=13314352; BD_HOME=1; H_PS_PSSID=10047_1435_10874_10212_10501_10496_10753_10796_10219_10355_10666_10597_10095_10658_10442_10700_10460_10360_10618; sug=3; sugstore=0; ORIGIN=2; bdime=0
Connection: keep-alive
Cache-Control: max-age=0
eof;
#注意post方式需要增加Content-Type
$hdrs = array(
    &#39;http&#39; =>array(
        &#39;header&#39; => $http,
        &#39;timeout&#39;=>1, //超时 秒
        &#39;method&#39; => &#39;POST&#39;,
        &#39;content&#39; => $postdata,
         &#39;protocol_version&#39; => &#39;1.1&#39;, //默认为 1.0
    ),
);
$context = stream_context_create($hdrs);
echo file_get_contents(&#39;http://test.cm/song.php&#39;, 0, $context);
Nach dem Login kopieren

Hinweis: http1.1 muss den Host-Header enthalten, http1.0 benötigt ihn jedoch nicht

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.

Verwandte Empfehlungen:

PHP-Methode zum Implementieren von Funktionen zum Hochladen und Schneiden von Bildern basierend auf CodeIgniter

Detaillierte Erläuterung der PHP-Metaphone()-Funktion und der PHP-Localeconv()-Funktionsbeispiele

PHP-Bild-Upload-Klasse und Aufrufmethode

Das obige ist der detaillierte Inhalt vonSo senden Sie eine HTTP-Anfrage über einen Socket in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage