Antworten:
Wenn Sie nicht mehr als nur den Inhalt der Datei benötigen, können Sie diese verwenden file_get_contents
.
$xml = file_get_contents("http://www.example.com/file.xml");
Für etwas komplexeres würde ich cURL verwenden .
failed to open stream: HTTP request failed!
file_get_contents
Sie die Anfrage natürlich nicht mit benutzerdefinierten Cookies, Headern und anderen Dingen stellen, die ein Browser normalerweise sendet, sodass Sie möglicherweise nicht die gesuchte Antwort erhalten. In diesem Fall ist es sowieso besser, CURL zu verwenden. (Aber das ist nicht der Fall des OP.)
Für erweiterte GET / POST-Anforderungen können Sie die CURL-Bibliothek ( http://us3.php.net/curl ) installieren :
$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()
. Eine einfache 4-Buchstaben-Zeichenfolge dauerte ungefähr 10 Sekunden, während das Einrollen eine vernünftigere max. 1 Sekunde dauerte.
http_get
sollte den Trick machen. Zu den Vorteilen von http_get
over file_get_contents
gehört die Möglichkeit, HTTP-Header anzuzeigen, auf Anforderungsdetails zuzugreifen und das Verbindungszeitlimit zu steuern.
$response = http_get("http://www.example.com/file.xml");
Denken Sie daran, dass Sie, wenn Sie einen Proxy verwenden, einen kleinen Trick in Ihrem PHP-Code machen müssen:
(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;
?>
Abhängig davon, ob Ihr PHP-Setup das Öffnen von URLs zulässt, können Sie die URL auch einfach mit den get-Argumenten in der Zeichenfolge öffnen (z. B. http://example.com?variable=value ).
Edit: Re-Lektüre der Frage , die ich nicht sicher bin , ob Sie suchen Variablen zu übergeben oder nicht - wenn Sie nicht können Sie einfach die fopen Anfrage senden containg http://example.com/filename.xml - fühlen Sie sich frei um den variablen = wertteil zu ignorieren
Ich benutze dafür gerne fsockopen open.
Andererseits ist die Verwendung der REST-API anderer Server in PHP sehr beliebt. Angenommen, Sie suchen nach einer Möglichkeit, einige HTTP-Anforderungen auf den anderen Server umzuleiten (z. B. eine XML-Datei abzurufen). Hier ist ein PHP-Paket, das Ihnen hilft:
https://github.com/romanpitak/PHP-REST-Client
Also, die XML-Datei bekommen:
$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
Guzzle ist eine sehr bekannte Bibliothek, die es extrem einfach macht, alle Arten von HTTP-Aufrufen durchzuführen. Siehe https://github.com/guzzle/guzzle . Installieren mit composer require guzzlehttp/guzzle
und ausführen composer install
. Jetzt reicht der folgende Code für einen http-Aufruf.
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();