Hoe stuur je een GET-verzoek vanuit PHP?

Ik ben van plan om PHP te gebruiken voor een eenvoudige eis. Ik moet XML-inhoud downloaden van een URL, waarvoor ik een HTTP GET-verzoek naar die URL moet sturen.

Hoe doe ik het in PHP?


Antwoord 1, autoriteit 100%

Tenzij je meer nodig hebt dan alleen de inhoud van het bestand, kun je file_get_contents.

$xml = file_get_contents("http://www.example.com/file.xml");

Voor alles wat ingewikkelder is, zou ik cURLgebruiken.


Antwoord 2, autoriteit 34%

Voor meer geavanceerde GET/POST-verzoeken kunt u de CURL-bibliotheek installeren (http://us3.php.net /krul):

$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);

Antwoord 3, autoriteit 16%

http_getzou moeten doen de truc. De voordelen van http_getten opzichte van file_get_contentsbevatten de mogelijkheid om HTTP-headers te bekijken, details van toegangsverzoeken te bekijken en de time-out van de verbinding te beheren.

$response = http_get("http://www.example.com/file.xml");

Antwoord 4, autoriteit 5%

Onthoud dat als je een proxy gebruikt, je een klein trucje moet doen in je php-code:

(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;
?>

Antwoord 5, autoriteit 2%

Afhankelijk van of uw php-configuratie fopen op URL’s toestaat, kunt u ook gewoon de url fopen met de get-argumenten in de string (zoals http://example.com?variable=value)

Bewerken: als ik de vraag opnieuw lees, weet ik niet zeker of je variabelen wilt doorgeven of niet – als je dat niet bent, kun je eenvoudig het fopen-verzoek sturen dat http://example.com/filename.xml– negeer gerust het variable=value gedeelte


Antwoord 6, autoriteit 2%

Guzzle is een zeer bekende bibliotheek die het uiterst eenvoudig maakt om allerlei soorten HTTP-aanroepen te doen. Zie https://github.com/guzzle/guzzle. Installeren met composer require guzzlehttp/guzzleen voer composer installuit. Nu is onderstaande code voldoende voor een http get call.

$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();

Antwoord 7

Ik gebruik hiervoor graag fsockopen open.


Antwoord 8

Aan de andere kant is het gebruik van REST API van andere servers erg populair in PHP. Stel dat u op zoek bent naar een manier om sommige HTTP-verzoeken om te leiden naar de andere server (bijvoorbeeld door een xml-bestand op te halen). Hier is een PHP-pakket om je te helpen:

https://github.com/romanpitak/PHP-REST-Client

Dus, het xml-bestand ophalen:

$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();

Other episodes