Отправка HTTP-запроса

PHP:
Отправка HTTP-запроса

Как это сделать:

PHP имеет отличный способ обработки HTTP-запросов с помощью библиотеки cURL. Но новинка — использование file_get_contents для более простых GET-запросов, или stream_context_create для POST-запросов. Вот быстрый взгляд на оба метода.

GET-запрос с file_get_contents():

// URL, который вы используете
$url = "http://example.com/api";

// Используйте file_get_contents для выполнения GET-запроса
$response = file_get_contents($url);

// Выведите результат, чтобы увидеть, что вы получили
var_dump($response);

POST-запрос с stream_context_create():

// URL, на который вы отправляете запрос
$url = "http://example.com/api";

// Данные, которые вы отправляете
$data = http_build_query([
    'foo' => 'bar',
    'baz' => 'qux',
]);

// Опции контекста потока
$options = [
    'http' => [
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => $data,
    ],
];

// Создайте контекст потока
$context  = stream_context_create($options);

// Выполните POST-запрос и поместите ответ в переменную
$result = file_get_contents($url, false, $context);

// Посмотрите, что вы получили
var_dump($result);

Глубокое погружение

Раньше fsockopen() был основным инструментом для HTTP-запросов в PHP. Это было неуклюже, но работало. Потом появился cURL, который по-прежнему мощный и широко используется, особенно для сложных операций. Но иногда вам не нужна бензопила, чтобы разрезать кусок веревки. Вот где отлично подходят file_get_contents() и stream_context_create().

Одна ключевая особенность file_get_contents() — это простота. Идеально подходит для простых GET-запросов. Но что, если вам нужно отправить данные методом POST? Здесь на помощь приходит stream_context_create(). Этот маленький драгоценный камень позволяет вам тонко настроить ваши HTTP-запросы с помощью заголовков, методов и многого другого.

Внутри file_get_contents() и stream_context_create() используют оболочки потоков PHP. Они заменяют операции с сокетами низкого уровня, которые обрабатываются через fsockopen().

Однако есть минус? Обработка ошибок может быть усложнена. Если что-то идет не так, эти функции менее снисходительны, чем cURL. Если вам нужна подробная информация о ответе или вы имеете дело со сложными HTTP-задачами, рассмотрите возможность оставаться с cURL.

Смотрите также