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?
À 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 .
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);
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");
_
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;
?>
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
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();
J'aime utiliser fsockopen open pour cela.
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();