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
coldplay.xixiOriginal
2020-07-01 09:18:054811Durchsuche

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);

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);

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;
}

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!

Stellungnahme:
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
Vorheriger Artikel:Ist xdebug in PHP nützlich?Nächster Artikel:Ist xdebug in PHP nützlich?