Heim > Backend-Entwicklung > PHP-Problem > Welche Möglichkeiten gibt es, HTTP-Anfragen in PHP zu initiieren?

Welche Möglichkeiten gibt es, HTTP-Anfragen in PHP zu initiieren?

coldplay.xixi
Freigeben: 2023-03-01 19:36:02
Original
4813 Leute haben es durchsucht

Die Methoden für PHP zum Initiieren von HTTP-Anfragen sind: 1. Senden Sie eine Get-Anfrage über [file_get_contents] 2. Senden Sie eine Get-Anfrage über [CURL] 3. Senden Sie eine Get-Anfrage über [fsocket].

Welche Möglichkeiten gibt es, HTTP-Anfragen in PHP zu initiieren?

Die Methoden für PHP zum Initiieren von HTTP-Anfragen sind:

  • Curl ist immer noch die beste HTTP-Bibliothek, niemand. Es kann HTTP-Anfragen in allen komplexen Anwendungsszenarien lösen.

  • Datei-Streaming-HTTP-Anfragen eignen sich besser für die Verarbeitung einfacher HTTP-POST/GET-Anfragen, sind jedoch nicht für komplexe HTTP-Anfragen geeignet >

  • PECL_HTTP-Erweiterung ist prägnanter und lässt sich problemloser schreiben, aber ihre Reife ist nicht gut, die Programmierschnittstelle ist nicht einheitlich und es fehlen Dokumentation und Beispiele.

Verwandte Lernempfehlungen:

PHP-Programmierung vom Einstieg bis zur Beherrschung

1. file_get_contents sendet Get-Anfrage

<?php
/**
 * 发送post请求
 * @param string $url 请求地址
 * @param array $post_data post键值对数据
 * @return string
 */
function send_post($url, $post_data) {
    $postdata = http_build_query($post_data);
    $options = array(
        &#39;http&#39; => array(
            &#39;method&#39; => &#39;POST&#39;,
            &#39;header&#39; => &#39;Content-type:application/x-www-form-urlencoded&#39;,
            &#39;content&#39; => $postdata,
            &#39;timeout&#39; => 15 * 60 // 超时时间(单位:s)
        )
    );
    $context = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    return $result;
}
$post_data = array(
&#39;username&#39; => &#39;abcdef&#39;,
&#39;password&#39; => &#39;123456&#39;
);
send_post(&#39;http://xxx.com&#39;, $post_data);
Nach dem Login kopieren

2. Senden Sie eine Get-Anfrage über CURL

<?php
$ch=curl_init(&#39;http://www.xxx.com/xx.html&#39;);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);
$output=curl_exec($ch);
$fh=fopen("out.html",&#39;w&#39;);
fwrite($fh,$output);
fclose($fh);
Nach dem Login kopieren

3. Senden Sie eine Get-Anfrage über fsocket

/**
 * Socket版本
 * 使用方法:
 * $post_string = "app=socket&amp;version=beta";
 * request_by_socket(&#39;blog.snsgou.com&#39;, &#39;/restServer.php&#39;, $post_string);
 */
function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30) {
$socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);
if (!$socket) die("$errstr($errno)");
fwrite($socket, "POST $remote_path HTTP/1.0");
fwrite($socket, "User-Agent: Socket Example");
fwrite($socket, "HOST: $remote_server");
fwrite($socket, "Content-type: application/x-www-form-urlencoded");
fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . "");
fwrite($socket, "Accept:*/*");
fwrite($socket, "");
fwrite($socket, "mypost=$post_string");
fwrite($socket, "");
$header = "";
while ($str = trim(fgets($socket, 4096))) {
$header .= $str;
}
$data = "";
while (!feof($socket)) {
$data .= fgets($socket, 4096);
}
return $data;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, HTTP-Anfragen in PHP zu initiieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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