wp_remote_request()

Выполняет HTTP-запрос и возвращает его ответ
Функция WordPress
INT 2.7.0
WordPress Icon

Описание функции

Функция wp_remote_request() выполняет HTTP-запрос и возвращает его ответ.

Функция позволяет отправить HTTP-запрос на указанный URL и получить ответ от удаленного сервера. Она может быть использована для получения данных с удаленного сервера, отправки данных на удаленный сервер или выполнения других операций, связанных с HTTP-запросами.

Функция wp_remote_request() является частью класса WP_Http, который предоставляет набор методов для работы с HTTP-запросами в WordPress.

Использование

wp_remote_request( string $url, array $args = array() ): array|WP_Error

Функция wp_remote_request() принимает два параметра: $url (обязательный) и $args (необязательный).

$url — URL, на который будет отправлен HTTP-запрос.

$args — массив аргументов запроса. Подробную информацию о принимаемых аргументах можно найти в документации метода WP_Http::request().

  • $url (string) — Обязательный. URL для получения.
  • $args (array) — Необязательный. Аргументы запроса. См. документацию метода WP_Http::request() для получения информации о принимаемых аргументах.

Функция возвращает массив ответа или объект WP_Error в случае ошибки.

<?php
$args = array(
    'method' => 'POST',
    'timeout' => 5,
    'headers' => array(
        'Content-Type' => 'application/json',
    ),
    'body' => json_encode( array( 'key' => 'value' ) ),
);
$response = wp_remote_request( 'https://example.com/api/endpoint', $args );
if ( is_wp_error( $response ) ) {
    $error_message = $response->get_error_message();
    echo "Something went wrong: $error_message";
} else {
    $response_code = wp_remote_retrieve_response_code( $response );
    $response_body = wp_remote_retrieve_body( $response );
    echo "Response code: $response_code";
    echo "Response body: $response_body";
}
?>

В этом примере мы отправляем POST-запрос на URL https://example.com/api/endpoint с использованием JSON-контента. Мы указываем таймаут запроса в 5 секунд и передаем заголовок Content-Type: application/json. Тело запроса содержит JSON-представление массива ['key' => 'value'].

После выполнения запроса мы проверяем, является ли ответ объектом WP_Error. Если это так, мы выводим сообщение об ошибке. В противном случае, мы получаем код ответа и тело ответа с помощью функций wp_remote_retrieve_response_code() и wp_remote_retrieve_body() соответственно, и выводим их на экран.

Примеры использования

Отправка GET-запроса на указанный URL


$url = 'https://api.example.com/data';
$response = wp_remote_request($url);
if (is_wp_error($response)) {
    echo 'Ошибка: ' . $response->get_error_message();
} else {
    $body = wp_remote_retrieve_body($response);
    echo 'Ответ: ' . $body;
}

В этом примере мы отправляем GET-запрос на указанный URL «https://api.example.com/data» с помощью функции wp_remote_request(). Если запрос выполнен успешно, мы получаем тело ответа с помощью функции wp_remote_retrieve_body() и выводим его на экран. Если произошла ошибка, мы выводим сообщение об ошибке.

Выполнение POST-запроса на удаленный сервер


$url = 'https://api.example.com/data';
$args = array(
    'method' => 'POST',
    'body' => array(
        'param1' => 'value1',
        'param2' => 'value2'
    )
);
$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
    echo 'Ошибка: ' . $response->get_error_message();
} else {
    $body = wp_remote_retrieve_body($response);
    echo 'Ответ: ' . $body;
}

В этом примере мы отправляем POST-запрос на указанный URL «https://api.example.com/data» с помощью функции wp_remote_request(). Мы передаем параметры запроса в массиве $args, где указываем метод запроса ‘POST’ и тело запроса с параметрами ‘param1’ и ‘param2’. Если запрос выполнен успешно, мы получаем тело ответа с помощью функции wp_remote_retrieve_body() и выводим его на экран. Если произошла ошибка, мы выводим сообщение об ошибке.

Установка пользовательского агента для запроса


$url = 'https://api.example.com/data';
$args = array(
    'user-agent' => 'My Custom User Agent'
);
$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
    echo 'Ошибка: ' . $response->get_error_message();
} else {
    $body = wp_remote_retrieve_body($response);
    echo 'Ответ: ' . $body;
}

В этом примере мы отправляем запрос на указанный URL «https://api.example.com/data» с помощью функции wp_remote_request() и устанавливаем пользовательский агент в параметрах запроса. Мы передаем параметр ‘user-agent’ со значением ‘My Custom User Agent’. Если запрос выполнен успешно, мы получаем тело ответа с помощью функции wp_remote_retrieve_body() и выводим его на экран. Если произошла ошибка, мы выводим сообщение об ошибке.

Установка времени ожидания соединения


$url = 'https://api.example.com/data';
$args = array(
    'timeout' => 10
);
$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
    echo 'Ошибка: ' . $response->get_error_message();
} else {
    $body = wp_remote_retrieve_body($response);
    echo 'Ответ: ' . $body;
}

В этом примере мы отправляем запрос на указанный URL «https://api.example.com/data» с помощью функции wp_remote_request() и устанавливаем время ожидания соединения в параметрах запроса. Мы передаем параметр ‘timeout’ со значением 10, что означает, что соединение будет ожидаться в течение 10 секунд. Если запрос выполнен успешно, мы получаем тело ответа с помощью функции wp_remote_retrieve_body() и выводим его на экран. Если произошла ошибка, мы выводим сообщение об ошибке.

Разрешение редиректов для запроса


$url = 'https://api.example.com/data';
$args = array(
    'redirection' => 3
);
$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
    echo 'Ошибка: ' . $response->get_error_message();
} else {
    $body = wp_remote_retrieve_body($response);
    echo 'Ответ: ' . $body;
}

В этом примере мы отправляем запрос на указанный URL «https://api.example.com/data» с помощью функции wp_remote_request() и разрешаем редиректы в параметрах запроса. Мы передаем параметр ‘redirection’ со значением 3, что означает, что будет разрешено до 3 редиректов. Если запрос выполнен успешно, мы получаем тело ответа с помощью функции wp_remote_retrieve_body() и выводим его на экран. Если произошла ошибка, мы выводим сообщение об ошибке.

Вопросы и ответы

Как отправить GET-запрос с помощью функции wp_remote_request()?

Для отправки GET-запроса с использованием функции wp_remote_request() необходимо передать URL, по которому нужно выполнить запрос, в качестве первого аргумента функции. Вторым аргументом можно передать массив дополнительных аргументов запроса.


$response = wp_remote_request( 'https://example.com/api/data' );

Как отправить POST-запрос с помощью функции wp_remote_request()?

Для отправки POST-запроса с использованием функции wp_remote_request() необходимо передать URL и массив с данными, которые нужно отправить, в качестве аргументов функции. Вторым аргументом можно передать массив дополнительных аргументов запроса.


$data = array(
    'name' => 'John Doe',
    'email' => 'john@example.com'
);
$args = array(
    'method' => 'POST',
    'body' => $data
);
$response = wp_remote_request( 'https://example.com/api/submit', $args );

Как установить таймаут для запроса с помощью функции wp_remote_request()?

Для установки таймаута запроса с использованием функции wp_remote_request() необходимо передать значение таймаута в секундах в качестве аргумента ‘timeout’ в массиве дополнительных аргументов запроса.


$args = array(
    'timeout' => 10
);
$response = wp_remote_request( 'https://example.com/api/data', $args );

Как установить заголовки запроса с помощью функции wp_remote_request()?

Для установки заголовков запроса с помощью функции wp_remote_request() необходимо передать аргумент ‘headers’ в виде массива или строки. В массиве можно указать несколько заголовков, каждый заголовок представляет собой элемент массива в формате ‘Заголовок: Значение’. В строке заголовки разделяются символом перевода строки.


$args = array(
    'headers' => array(
        'Content-Type: application/json',
        'Authorization: Bearer 1234567890'
    )
);
$response = wp_remote_request( $url, $args );

Как отправить файл с помощью функции wp_remote_request()?

Для отправки файла с помощью функции wp_remote_request() необходимо передать аргумент ‘body’ в виде массива или строки. В массиве можно указать параметр ‘file’ с путем к файлу, который нужно отправить. Также можно указать другие параметры, например, ‘filename’ с именем файла, ‘type’ с MIME-типом файла и т.д.


$args = array(
    'body' => array(
        'file' => '/path/to/file.jpg',
        'filename' => 'file.jpg',
        'type' => 'image/jpeg'
    )
);
$response = wp_remote_request( $url, $args );

Как обработать ошибку запроса с помощью функции wp_remote_request()?

При выполнении запроса с помощью функции wp_remote_request() может возникнуть ошибка, которую необходимо обработать. Для этого нужно проверить тип возвращаемого значения функции. Если возвращается объект класса WP_Error, то произошла ошибка, и нужно обработать ее соответствующим образом.


$response = wp_remote_request( $url, $args );
if ( is_wp_error( $response ) ) {
    $error_message = $response->get_error_message();
    echo 'Ошибка запроса: ' . $error_message;
} else {
    // Обработка успешного запроса
}

Как работает параметр ‘blocking’ в функции wp_remote_request()?

Параметр ‘blocking’ в функции wp_remote_request() определяет, требует ли вызывающий код результат запроса или нет. Если значение параметра установлено в false, то запрос будет отправлен на удаленный сервер, и управление будет возвращено вызывающему коду немедленно. Вызывающий код будет знать, успешно выполнен запрос или нет, но не получит ответа от удаленного сервера.

Пример использования параметра ‘blocking’:


$response = wp_remote_request( 'https://api.example.com/data', array(
    'blocking' => false,
) );

Как работает параметр ‘sslverify’ в функции wp_remote_request()?

Параметр ‘sslverify’ в функции wp_remote_request() определяет, нужно ли проверять SSL-сертификат для запроса. По умолчанию значение параметра установлено в true, что означает, что SSL-сертификат будет проверяться.

Пример использования параметра ‘sslverify’:


$response = wp_remote_request( 'https://api.example.com/data', array(
    'sslverify' => false,
) );

Как работает параметр ‘stream’ в функции wp_remote_request()?

Параметр ‘stream’ в функции wp_remote_request() определяет, нужно ли потоково записывать ответ запроса в файл. Если значение параметра установлено в true, и не указано имя файла, ответ будет сохранен во временной директории WordPress с именем, основанным на базовом имени URL.

Пример использования параметра ‘stream’:


$response = wp_remote_request( 'https://api.example.com/data', array(
    'stream' => true,
    'filename' => '/path/to/file.txt',
) );

Функция wp_remote_request() в WordPress позволяет выполнять HTTP-запросы и получать ответы. Она предоставляет множество параметров для настройки запроса, включая возможность выбора метода запроса, установки таймаута, работы с SSL-сертификатами и потоковой записи ответа в файл. Параметры ‘blocking’, ‘sslverify’ и ‘stream’ предоставляют дополнительные возможности для контроля над выполнением запроса и обработкой ответа.

Связанные элементы

  • Функция wp_remote_get(): выполняет GET-запрос к указанному URL и возвращает его ответ.
  • Функция wp_remote_post(): выполняет POST-запрос к указанному URL и возвращает его ответ.
  • Функция wp_remote_head(): выполняет HEAD-запрос к указанному URL и возвращает его ответ.
  • Функция wp_remote_retrieve_response_code(): возвращает HTTP-код ответа из массива ответа.
  • Функция wp_remote_retrieve_response_message(): возвращает сообщение ответа из массива ответа.
  • Функция wp_remote_retrieve_body(): возвращает тело ответа из массива ответа.
  • Класс WP_Http: предоставляет методы для выполнения HTTP-запросов.
  • Класс WP_Http_Cookie: представляет собой объект cookie, который может быть добавлен к запросу.
  • Класс WP_Http_Encoding: предоставляет методы для сжатия и распаковки данных.
Обсуждение