Ich habe vor, PHP für eine einfache Anforderung zu verwenden. Ich muss einen XML-Inhalt von einer URL herunterladen, für den ich eine HTTP-GET-Anfrage an diese URL senden muss.
Wie mache ich das in PHP?
Sofern Sie nicht mehr als nur den Inhalt der Datei benötigen, können Sie file_get_contents
.
$xml = file_get_contents("http://www.example.com/file.xml");
Für etwas komplexeres würde ich cURL verwenden.
Für erweiterte GET/POST-Anforderungen können Sie die CURL-Bibliothek installieren ( 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
sollte den Trick machen. Die Vorteile von http_get
Über file_get_contents
Enthält die Möglichkeit, HTTP-Header anzuzeigen, auf Anforderungsdetails zuzugreifen und das Zeitlimit für die Verbindung 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 )
Bearbeiten: Erneutes Lesen der Frage Ich bin mir nicht sicher, ob Sie Variablen übergeben möchten oder nicht. Wenn Sie dies nicht tun, können Sie einfach die fopen-Anfrage mit einem http: // Beispiel senden .com/filename.xml - Sie können den Teil variable = value ignorieren
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, um Ihnen zu helfen:
https://github.com/romanpitak/PHP-REST-Client
So erhalten Sie die XML-Datei:
$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
Ich benutze dafür gerne fsockopen open.
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 Sie mit composer require guzzlehttp/guzzle
und Renn composer install
. Der folgende Code reicht jetzt für einen http get-Aufruf.
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();