Risposte:
A meno che tu non abbia bisogno di qualcosa di più del semplice contenuto del file, potresti usarlo file_get_contents
.
$xml = file_get_contents("http://www.example.com/file.xml");
Per qualcosa di più complesso, userei cURL .
failed to open stream: HTTP request failed!
file_get_contents
non ti consente di effettuare la richiesta con cookie personalizzati, intestazioni e altre cose che un browser in genere invierebbe, quindi potresti non ottenere la risposta che stavi cercando. In tal caso, sarebbe meglio usare CURL comunque. (Ma questo non è il caso del PO.)
Per richieste GET / POST più avanzate, è possibile installare la libreria 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()
. Una semplice stringa di 4 lettere impiegava circa 10 secondi, mentre l'arricciatura impiegava un ragionevole più di ~ 1 secondo max.
http_get
dovrebbe fare il trucco. I vantaggi di http_get
over file_get_contents
includono la possibilità di visualizzare le intestazioni HTTP, accedere ai dettagli della richiesta e controllare il timeout della connessione.
$response = http_get("http://www.example.com/file.xml");
Ricorda che se stai usando un proxy devi fare un piccolo trucco nel tuo codice 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;
?>
A seconda che la tua configurazione php consenta di inserire gli URL, puoi anche semplicemente aprire l'URL con gli argomenti get nella stringa (come http://example.com?variable=value )
Modifica: rileggere la domanda Non sono sicuro se stai cercando di passare variabili o no - in caso contrario puoi semplicemente inviare la richiesta fopen contenente http://example.com/filename.xml - sentiti libero per ignorare la parte variabile = valore
Mi piace usare fsockopen open per questo.
D'altra parte, l'utilizzo dell'API REST di altri server è molto popolare in PHP. Supponiamo che tu stia cercando un modo per reindirizzare alcune richieste HTTP nell'altro server (ad esempio ottenere un file XML). Ecco un pacchetto PHP per aiutarti:
https://github.com/romanpitak/PHP-REST-Client
Quindi, ottenendo il file xml:
$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
Guzzle è una libreria molto nota che rende estremamente facile eseguire tutti i tipi di chiamate HTTP. Vedi https://github.com/guzzle/guzzle . Installa con composer require guzzlehttp/guzzle
ed esegui composer install
. Ora il codice qui sotto è sufficiente per una chiamata get http.
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();