Как отправить запрос GET из PHP? - PullRequest
255 голосов
/ 06 июня 2009

Я планирую использовать PHP для простого требования. Мне нужно загрузить содержимое XML с URL-адреса, для чего мне нужно отправить HTTP-запрос GET на этот URL-адрес.

Как мне это сделать в PHP?

Ответы [ 8 ]

345 голосов
/ 06 июня 2009

Если вам не нужно больше, чем просто содержимое файла, вы можете использовать file_get_contents.

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

Для чего-то более сложного, я бы использовал cURL .

125 голосов
/ 06 июня 2009

Для более сложных запросов GET / POST вы можете установить библиотеку CURL (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);
62 голосов
/ 06 июня 2009

http_get должны сделать свое дело. Преимущества http_get перед file_get_contents включают возможность просмотра заголовков HTTP, доступа к информации о запросах и контроля времени ожидания соединения.

$response = http_get("http://www.example.com/file.xml");
19 голосов
/ 24 февраля 2012

Помните, что если вы используете прокси, вам нужно сделать небольшой трюк в своем php-коде:

(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;
?>
9 голосов
/ 06 июня 2009

В зависимости от того, позволяет ли ваша настройка php открывать URL-адреса, вы также можете просто указать URL с аргументами get в строке (например, http://example.com? Variable = value )

Редактировать: Перечитывая вопрос, я не уверен, хотите ли вы передать переменные или нет - если нет, вы можете просто отправить запрос fopen, связавшись с http://example.com/filename.xml - не стесняйтесь игнорировать переменная = значение части

5 голосов
/ 03 марта 2017

С другой стороны, использование REST API других серверов очень популярно в PHP. Предположим, вы ищете способ перенаправить некоторые HTTP-запросы на другой сервер (например, получить файл XML). Вот пакет PHP, который вам поможет:

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

Итак, получим XML-файл:

$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
5 голосов
/ 04 октября 2009

Мне нравится использовать fsockopen open для этого.

2 голосов
/ 10 апреля 2019

Guzzle - это очень известная библиотека, которая позволяет очень легко выполнять всевозможные HTTP-вызовы. См. https://github.com/guzzle/guzzle. Установка с composer require guzzlehttp/guzzle и запуск composer install. Теперь приведенного ниже кода достаточно для вызова http get.

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

echo $response->getStatusCode();
echo $response->getBody();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...