web-dev-qa-db-fra.com

Comment envoyer une demande GET à partir de PHP?

Je prévois d'utiliser PHP pour une simple exigence. J'ai besoin de télécharger un contenu XML à partir d'une URL pour laquelle je dois envoyer une requête HTTP GET à cette URL.

Comment puis-je le faire en PHP?

261
Veera

À moins que vous n'ayez besoin de plus que le contenu du fichier, vous pouvez utiliser file_get_contents .

_$xml = file_get_contents("http://www.example.com/file.xml");
_

Pour quelque chose de plus complexe, j'utiliserais cURL .

354
Sasha Chedygov

Pour les requêtes GET/POST plus avancées, vous pouvez installer la bibliothèque CURL ( http://us3.php.net/curl ):

$ch = curl_init("REMOTE XML FILE URL GOES HERE"); // such as http://example.com/example.xml
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
128
James Skidmore

http_get devrait faire l'affaire. Les avantages de _http_get_ sur file_get_contents incluent la possibilité d'afficher les en-têtes HTTP, les détails des demandes d'accès et de contrôler le délai de connexion.

_$response = http_get("http://www.example.com/file.xml");
_
63
William Brendel

Rappelez-vous que si vous utilisez un proxy, vous devez faire une petite astuce dans votre code php:

(PROXY WITHOUT AUTENTICATION EXAMPLE)

<?php
$aContext = array(
    'http' => array(
        'proxy' => 'proxy:8080',
        'request_fulluri' => true,
    ),
);
$cxContext = stream_context_create($aContext);

$sFile = file_get_contents("http://www.google.com", False, $cxContext);

echo $sFile;
?>
20
pepe

Selon que votre configuration php autorise ou non fopen sur les URL, vous pouvez également simplement ouvrir l'url avec les arguments de la chaîne (tels que http://example.com?variable=value )

Edit: Relecture de la question Je ne suis pas certain que vous souhaitiez ou non passer des variables. Sinon, vous pouvez simplement envoyer la demande fopen contenant http://example.com/nom_fichier. xml - n'hésitez pas à ignorer la partie variable = value

9
Zxaos

D'autre part, l'utilisation de REST API d'autres serveurs est très populaire en PHP. Supposons que vous cherchiez un moyen de rediriger certaines requêtes HTTP vers l'autre serveur (par exemple, en obtenant un fichier XML). Voici un package PHP pour vous aider:

https://github.com/romanpitak/PHP-REST-Client

Donc, obtenir le fichier XML:

$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
5
Mostafa

J'aime utiliser fsockopen open pour cela.

5
pbreitenbach

Guzzle est une bibliothèque très connue qui rend extrêmement facile toutes sortes d'appels HTTP. Voir https://github.com/guzzle/guzzle . Installez avec composer require guzzlehttp/guzzle et exécutez composer install. Maintenant, le code ci-dessous est suffisant pour un appel http get.

$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');

echo $response->getStatusCode();
echo $response->getBody();
3
Mark Baaijens