775 votes

Comment envoyer une requête POST avec PHP ?

En fait, je veux lire le contenu qui vient après la requête de recherche effectuée. Le problème est que l'url ne requiert que la méthode "post", elle ne prend aucune action avec la méthode "get"...

Et je dois lire tous les contenus à l'aide de "domdocument" ou "file_get_contents()". Je veux savoir si je peux envoyer des paramètres avec la méthode post et ensuite lire le contenu via php...

1420voto

dbau Points 3439

Méthode sans CURL avec PHP5 :

$url = 'http://server.com/path';
$data = array('key1' => 'value1', 'key2' => 'value2');

// use key 'http' even if you send the request to https://...
$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data),
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

var_dump($result);

Consultez le manuel PHP pour plus d'informations sur la méthode et sur la façon d'ajouter des en-têtes, par exemple :

188voto

Fred Tanrikut Points 791

J'ai essayé celui-ci et il fonctionne bien... comme je l'avais demandé...

<?php
$url = $file_name;
$fields = array(
            '__VIEWSTATE'=>urlencode($state),
            '__EVENTVALIDATION'=>urlencode($valid),
            'btnSubmit'=>urlencode('Submit')
        );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

//execute post
$result = curl_exec($ch);
print $result;
?>

2voto

cweiske Points 13722

Essayez le PEAR HTTP_Request2 pour envoyer facilement des requêtes POST. Vous pouvez également utiliser les fonctions curl de PHP ou utiliser un module PHP contexte du flux .

HTTP_Request2 permet également de simuler le serveur, ce qui facilite les tests unitaires de votre code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X