wake-up-neo.com

Wie sende ich eine GET-Anfrage von PHP?

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?

261
Veera

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.

354
Sasha Chedygov

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);
128
James Skidmore

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");
63
William Brendel

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;
?>
20
pepe

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

9
Zxaos

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();
5
Mostafa

Ich benutze dafür gerne fsockopen open.

5
pbreitenbach

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();
3
Mark Baaijens