Maison >développement back-end >tutoriel php >PHP utilise stream_context_create() pour simuler la méthode de requête POST/GET
L'exemple de cet article décrit comment PHP utilise stream_context_create() pour simuler les requêtes POST/GET. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Parfois, nous devons simuler POST/GET et d'autres requêtes côté serveur, c'est-à-dire implémenter la simulation dans le programme PHP Comment. le faire ? En d’autres termes, dans un programme PHP, si on vous donne un tableau, comment POST/GET ce tableau à une autre adresse ? Bien sûr, c'est facile de le faire en utilisant CURL, mais que se passe-t-il si vous n'utilisez pas la bibliothèque CURL ? En fait, il existe déjà une fonction connexe implémentée en PHP, et cette fonction est stream_context_create() dont je parlerai ensuite.
Montrez-vous directement le code, c'est la meilleure façon :
$data = array( 'foo'=>'bar', 'baz'=>'boom', 'site'=>'localhost', 'name'=>'nowa magic'); $data = http_build_query($data); //$postdata = http_build_query($data); $options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type:application/x-www-form-urlencoded', 'content' => $data //'timeout' => 60 * 60 // 超时时间(单位:s) ) ); $url = "http://localhost/test2.php"; $context = stream_context_create($options); $result = file_get_contents($url, false, $context); echo $result;
Le code pour http://localhost/test2.php est :
$data = $_POST; echo '<pre class="brush:php;toolbar:false">'; print_r( $data ); echo '';
Le résultat exécuté est :
Array ( [foo] => bar [baz] => boom [site] => localhost [name] => nowa magic )
Le programme utilise la fonction http_build_query() Si vous avez besoin d'en savoir plus, vous pouvez vous référer à l'article précédent ". Comment PHP utilise http_build_query() pour construire une chaîne d'URL".
2. stream_context_create() est utilisé pour créer des options de contexte pour l'ouverture de fichiers, telles que l'accès avec POST, l'utilisation d'un proxy, l'envoi d'en-têtes, etc. Créez simplement un flux, donnons un autre exemple :
3 Les options de contexte créées par stream_context_create peuvent être utilisées pour les flux ou le système de fichiers streams. Il est plus utile pour les fonctions telles que file_get_contents, file_put_contents et readfile qui opèrent directement sur les noms de fichiers sans descripteurs de fichiers. L'ajout d'en-têtes à stream_context_create n'est qu'une partie de la fonction. Vous pouvez également définir des proxys, des délais d'attente, etc. Cela rend la fonction d'accès au Web pas plus faible que curl.$context = stream_context_create(array( 'http' => array( 'method' => 'POST', 'header' => sprintf("Authorization: Basic %s\r\n", base64_encode($username.':'.$password)). "Content-type: application/x-www-form-urlencoded\r\n", 'content' => http_build_query(array('status' => $message)), 'timeout' => 5, ), )); $ret = file_get_contents('http://twitter.com/statuses/update.xml', false, $context);
4. La fonction de stream_context_create() : créer et renvoyer un flux de données texte et appliquer diverses options, qui peuvent être utilisées pour les paramètres de délai d'attente, les serveurs proxy, les méthodes de requête et les paramètres d'informations d'en-tête de fopen(), file_get_contents() et autres processus spéciaux.
5. stream_context_create peut également résoudre le traitement du délai d'attente de file_get_contents en ajoutant l'option de délai d'attente :
Plus PHP utilise stream_context_create() pour simuler le POST. Pour les articles liés à la méthode de requête /GET, veuillez faire attention au site Web PHP chinois !$opts = array( 'http'=>array( 'method'=>"GET", 'timeout'=>60, ) ); //创建数据流上下文 $context = stream_context_create($opts); $html =file_get_contents('http://localhost', false, $context); //fopen输出文件指针处的所有剩余数据: //fpassthru($fp); //fclose()前使用