J'utilise la fonction de PHP file_get_contents()
pour récupérer le contenu d'une URL, puis je traite les en-têtes via la variable $http_response_header
.
Maintenant, le problème est que certaines URL ont besoin que certaines données soient publiées sur l'URL (par exemple, les pages de connexion).
Comment je fais ça?
Je me rends compte qu'en utilisant stream_context, je peux peut-être le faire, mais je ne suis pas tout à fait clair.
Merci.
php
http
http-post
file-get-contents
Paras Chopra
la source
la source
Réponses:
L'envoi d'une requête HTTP POST en utilisant
file_get_contents
n'est pas si difficile, en fait: comme vous l'avez deviné, vous devez utiliser le$context
paramètre.Il y a un exemple donné dans le manuel PHP, sur cette page: Options de contexte HTTP (citation) :
Fondamentalement, vous devez créer un flux, avec les bonnes options (il y a une liste complète sur cette page) , et l'utiliser comme troisième paramètre pour
file_get_contents
- rien de plus ;-)En guise de note: de manière générale, pour envoyer des requêtes HTTP POST, nous avons tendance à utiliser curl, qui offre beaucoup d'options, mais les flux sont l'une des belles choses de PHP que personne ne connaît ... dommage. .
la source
content
ne doit pas être un tableau PHP: il doit être un querystring (il faut a ce format:param1=value1¶m2=value2¶m3=value3
) ;; ce qui signifie que vous devrez probablement utiliserhttp_build_query($_POST)
$postdata = http_build_query($_POST)
.\r\n
sauts de ligne - voir: stackoverflow.com/a/2107792/404960Une alternative, vous pouvez également utiliser fopen
la source
toto=1&tata=2
aussi.fopen
Cependant, je n'ai pas utilisé le .la source
file_get_contents
au lieu defopen
+stream_get_contents
. Et vous ne fermez même pas le "fichier". Voir la réponse acceptée par @PascalMARTIN.