Réponses:
Sauf si vous avez besoin de plus que le contenu du fichier, vous pouvez l'utiliser file_get_contents
.
$xml = file_get_contents("http://www.example.com/file.xml");
Pour quelque chose de plus complexe, j'utiliserais cURL .
failed to open stream: HTTP request failed!
file_get_contents
ne vous permet pas de faire la demande avec des cookies personnalisés, des en-têtes et d'autres choses qu'un navigateur enverrait généralement, donc vous pourriez ne pas obtenir la réponse que vous recherchez. Dans ce cas, vous feriez mieux d'utiliser CURL de toute façon. (Mais ce n'est pas le cas du PO.)
Pour des demandes 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);
file_get_contents()
. Une simple chaîne de 4 lettres a pris environ 10 secondes, tandis que la boucle a pris plus de 1 seconde max.
http_get
devrait faire l'affaire. Les avantages de http_get
over file_get_contents
incluent la possibilité d'afficher les en-têtes HTTP, d'accéder aux détails de la demande et de contrôler le délai d'expiration de la connexion.
$response = http_get("http://www.example.com/file.xml");
N'oubliez pas 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 fopen sur les URL, vous pouvez également fopen simplement l'url avec les arguments get dans la chaîne (comme http://example.com?variable=value )
Edit: relisant la question, je ne suis pas certain si vous cherchez à passer des variables ou non - si vous ne l'êtes pas, vous pouvez simplement envoyer la demande fopen contenant http://example.com/filename.xml - n'hésitez pas ignorer la partie variable = valeur
J'aime utiliser fsockopen ouvert pour cela.
En revanche, l'utilisation de l'API REST 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, obtenir 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();
Guzzle est une bibliothèque très connue qui rend extrêmement facile de faire toutes sortes d'appels HTTP. Voir https://github.com/guzzle/guzzle . Installez avec composer require guzzlehttp/guzzle
et exécutez composer install
. Le code ci-dessous est maintenant 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();