Ich plane, PHP für eine einfache Anforderung zu verwenden. Ich muss einen XML-Inhalt von einer URL herunterladen, für die ich eine HTTP-GET-Anforderung an diese URL senden muss.
Wie mache ich das in PHP?
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 :
quelle
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 vonhttp_get
overfile_get_contents
gehört die Möglichkeit, HTTP-Header anzuzeigen, auf Anforderungsdetails zuzugreifen und das Verbindungszeitlimit zu steuern.quelle
Denken Sie daran, dass Sie, wenn Sie einen Proxy verwenden, einen kleinen Trick in Ihrem PHP-Code machen müssen:
quelle
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
quelle
Ich benutze dafür gerne fsockopen open.
quelle
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:
Also, die XML-Datei bekommen:
quelle
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ührencomposer install
. Jetzt reicht der folgende Code für einen http-Aufruf.quelle