Maison  >  Article  >  développement back-end  >  Quels sont les moyens d'initier des requêtes HTTP en PHP ?

Quels sont les moyens d'initier des requêtes HTTP en PHP ?

coldplay.xixi
coldplay.xixioriginal
2020-07-01 09:18:054784parcourir

Les méthodes permettant à PHP de lancer des requêtes HTTP sont : 1. Envoyez une requête get via [file_get_contents] ; 2. Envoyez une requête get via [CURL] ;

Quels sont les moyens d'initier des requêtes HTTP en PHP ?

Les méthodes permettant à PHP d'initier des requêtes HTTP sont :

  • curl est toujours le meilleure bibliothèque HTTP, personne. Il peut résoudre les requêtes HTTP dans tous les scénarios d'application complexes ;

  • Les requêtes HTTP de streaming de fichiers sont plus adaptées au traitement de requêtes HTTP POST/GET simples, mais ne conviennent pas aux requêtes HTTP complexes

  • L'extension PECL_HTTP est plus concise et plus simple pour écrire du code, mais sa maturité n'est pas bonne, l'interface de programmation n'est pas unifiée et la documentation et les exemples font défaut.

Recommandations d'apprentissage associées :

La programmation PHP de l'entrée à la maîtrise

1. 🎜>

<?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. Envoyez une demande d'obtention via 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. Envoyez une demande d'obtention via 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;
}
.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Xdebug est-il utile en php ?Article suivant:Xdebug est-il utile en php ?