Web request HTTP GET POST avec PHP
Par PlaceOweb le mardi, novembre 4 2014, 13:00 - PHP - Lien permanent
Comment faire une requête HTTP (GET ou POST) depuis PHP ?
Avec PHP, il existe entre autre :
PHP Natif (inclus ou avec librairies PHP à ajouter)
CURL
HTTP (pecl_http)
- Pré-requis pour Windows : vous devez également charger les extensions PHP suivantes : hash, iconv et SPL.
- Installation L'extension pecl_http n'est pas intégrée à PHP.
- HTTP Fonctions
file_get_contents
Lit tout un fichier dans une chaîne, donc le résultat de la page web si elle a répondue. Selon les besoins vous aurez besoin de paramétrer le contexte de flux avec stream_context_create.
Par exemple : How do I send a POST request with PHP? CURL-less method with PHP5
Ensuite si vous souhaitez obtenir le status de réponse du serveur (En-têtes de réponse HTTP), utiliser la variable prédéfinie $http_response_header
$url = 'http://server.com/path'; $data = array( 'param1' => 'value1', 'param2' => '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); echo "-- REQUEST ------------------------------" . PHP_EOL; echo "URL: " . $url . PHP_EOL; echo "DATA: " . print_r($data, true); echo "-- HEADER ------------------------------" . PHP_EOL; print_r($http_response_header); echo "-- BODY ------------------------------" . PHP_EOL; var_dump($result); // array(7) { // [0]=> // string(15) "HTTP/1.1 200 OK" // [1]=> // string(35) "Date: Tue, 04 Nov 2014 11:00:09 GMT" // [2]=> // string(14) "Server: Apache" // [3]=> // string(34) "X-Powered-By: PHP/5.3.8-1~dotdeb.1" // [4]=> // string(21) "Vary: Accept-Encoding" // [5]=> // string(17) "Connection: close" // [6]=> // string(23) "Content-Type: text/html" // } // Ou NULL si pas de réponse // PHP Warning: file_get_contents(http://server.com/path): failed to open stream: php_network_getaddresses: getaddrinfo failed: H¶te inconnu. // PHP Notice: Undefined variable: http_response_header // NULL echo "-- ANALYSE ------------------------------" . PHP_EOL; if(!empty($http_response_header)) { $arr = preg_split('/ /', $http_response_header[0]); echo 'Status:' . $arr[1] . PHP_EOL; // Status:200 }
PHP Libraire Framework
Zend_Http_Client
Zend_Http_Client fournit une interface qui permet d'utiliser le protocole HTTP (Hyper-Text Transfer Protocol). Zend_Http_Client supporte les fonctionnalités de base d'un client HTTP, ainsi que des fonctionnalités plus avancées, comme l'authentification ou l'upload de fichiers. Toutes les requêtes retournent un objet Zend_Http_Response, avec lequel on pourra accéder au corps ou aux en-têtes de la réponse HTTP (voyez Zend_Http_Response).