wp_remote_get()

Выполняет HTTP-запрос с использованием метода GET и возвращает его ответ
Функция WordPress
INT 2.7.0
WordPress Icon
Содержание
  1. Описание функции
  2. Примеры использования
  3. Выполнение GET-запроса к удаленному серверу
  4. Получение данных с удаленного сервера
  5. Проверка доступности удаленного ресурса
  6. Извлечение заголовков ответа
  7. Установка пользовательского User-Agent
  8. Установка времени ожидания ответа
  9. Вопросы и ответы
  10. Как отправить GET-запрос с помощью функции wp_remote_get()?
  11. Как обработать ошибку при использовании функции wp_remote_get()?
  12. Как установить таймаут для запроса с помощью функции wp_remote_get()?
  13. Как обработать редиректы при использовании функции wp_remote_get()?
  14. Как указать версию протокола HTTP при использовании функции wp_remote_get()?
  15. Как указать пользовательский User-Agent при использовании функции wp_remote_get()?
  16. Как передать заголовки в запросе с помощью функции wp_remote_get()?
  17. Как отправить cookies в запросе с помощью функции wp_remote_get()?
  18. Как отправить тело запроса с помощью функции wp_remote_get()?
  19. Связанные элементы

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

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

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

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

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

Функция wp_remote_get() принимает два параметра: $url (обязательный) и $args (необязательный). Она возвращает массив с ответом или объект WP_Error в случае ошибки.

Параметр $url — это URL-адрес, который нужно получить.

Параметр $args — это массив с дополнительными аргументами запроса. Он содержит информацию о методе запроса, таймауте, заголовках, теле запроса и других параметрах.

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

Дополнительные параметры из WP_Http::request( … $args ):

  • method (string) — Метод запроса. Принимает ‘GET’, ‘POST’, ‘HEAD’, ‘PUT’, ‘DELETE’, ‘TRACE’, ‘OPTIONS’ или ‘PATCH’. Некоторые транспорты технически позволяют другие методы, но их не следует использовать. По умолчанию ‘GET’.
  • timeout (float) — Продолжительность открытого соединения в секундах. По умолчанию 5.
  • redirection (int) — Количество разрешенных перенаправлений. Не поддерживается всеми транспортами. По умолчанию 5.
  • httpversion (string) — Версия протокола HTTP для использования. Принимает ‘1.0’ и ‘1.1’. По умолчанию ‘1.0’.
  • user-agent (string) — Значение User-agent, отправляемое. По умолчанию ‘WordPress/’ . get_bloginfo( ‘version’ ) . ‘; ‘ . get_bloginfo( ‘url’ ).
  • reject_unsafe_urls (bool) — Пропускать ли URL-адреса через wp_http_validate_url(). По умолчанию false.
  • blocking (bool) — Требуется ли вызывающему коду результат запроса. Если установлено значение false, запрос будет отправлен на удаленный сервер, и обработка будет возвращена вызывающему коду немедленно. Вызывающий код будет знать, успешно ли выполнен запрос или произошла ошибка, но не получит ответа от удаленного сервера. По умолчанию true.
  • headers (string|array) — Массив или строка заголовков, отправляемых с запросом.
  • cookies (array) — Массив куки, отправляемых с запросом.
  • body (string|array) — Тело запроса, отправляемое с запросом. По умолчанию null.
  • compress (bool) — Сжимать ли тело запроса при отправке запроса. По умолчанию false.
  • decompress (bool) — Разжимать ли сжатый ответ. Если установлено значение false и сжатое содержимое возвращается в ответе, оно должно быть отдельно разжато. По умолчанию true.
  • sslverify (bool) — Проверять ли SSL для запроса. По умолчанию true.
  • sslcertificates (string) — Абсолютный путь к файлу SSL-сертификата .crt. По умолчанию ABSPATH . WPINC . ‘/certificates/ca-bundle.crt’.
  • stream (bool) — Потоковая передача в файл. Если установлено значение true и не указано имя файла, он будет помещен во временную директорию WP, а его имя будет установлено с использованием базового имени URL. По умолчанию false.
  • filename (string) — Имя файла для записи при потоковой передаче. $stream должно быть установлено в true. По умолчанию null.
  • limit_response_size (int) — Размер ответа в байтах. По умолчанию null.

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

<?php
$url = 'https://example.com/api/data';
$args = array(
    'timeout' => 10,
    'headers' => array(
        'Authorization' => 'Bearer ' . $access_token,
        'Content-Type' => 'application/json',
    ),
);
$response = wp_remote_get( $url, $args );
if ( ! is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) === 200 ) {
    $data = wp_remote_retrieve_body( $response );
    // Обработка полученных данных
} else {
    $error_message = is_wp_error( $response ) ? $response->get_error_message() : 'Request failed';
    // Обработка ошибки
}
?>

В этом примере мы выполняем GET-запрос к API по адресу https://example.com/api/data. Мы устанавливаем таймаут запроса в 10 секунд и добавляем заголовки авторизации и типа контента. Затем мы проверяем, успешно ли выполнен запрос, и обрабатываем полученные данные или ошибку соответственно.

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

Выполнение GET-запроса к удаленному серверу


$url = 'https://api.example.com/data';
$response = wp_remote_get( $url );
if ( is_wp_error( $response ) ) {
    $error_message = $response->get_error_message();
    echo "Ошибка при выполнении запроса: " . $error_message;
} else {
    $response_code = wp_remote_retrieve_response_code( $response );
    $response_body = wp_remote_retrieve_body( $response );
    echo "Код ответа: " . $response_code . "<br>";
    echo "Тело ответа: " . $response_body;
}

Получение данных с удаленного сервера


$url = 'https://api.example.com/data';
$response = wp_remote_get( $url );
if ( is_wp_error( $response ) ) {
    $error_message = $response->get_error_message();
    echo "Ошибка при выполнении запроса: " . $error_message;
} else {
    $data = wp_remote_retrieve_body( $response );
    $decoded_data = json_decode( $data, true );
    
    if ( $decoded_data ) {
        echo "Полученные данные: ";
        print_r( $decoded_data );
    } else {
        echo "Ошибка при декодировании данных.";
    }
}

Проверка доступности удаленного ресурса


$url = 'https://api.example.com';
$response = wp_remote_get( $url );
if ( is_wp_error( $response ) ) {
    echo "Сервер недоступен.";
} else {
    echo "Сервер доступен.";
}

Извлечение заголовков ответа


$url = 'https://api.example.com';
$response = wp_remote_get( $url );
if ( is_wp_error( $response ) ) {
    echo "Ошибка при выполнении запроса.";
} else {
    $headers = wp_remote_retrieve_headers( $response );
    echo "Заголовки ответа: ";
    print_r( $headers );
}

Установка пользовательского User-Agent


$url = 'https://api.example.com';
$args = array(
    'user-agent' => 'My Custom User Agent',
);
$response = wp_remote_get( $url, $args );
if ( is_wp_error( $response ) ) {
    echo "Ошибка при выполнении запроса.";
} else {
    $response_code = wp_remote_retrieve_response_code( $response );
    echo "Код ответа: " . $response_code;
}

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


$url = 'https://api.example.com';
$args = array(
    'timeout' => 10,
);
$response = wp_remote_get( $url, $args );
if ( is_wp_error( $response ) ) {
    echo "Ошибка при выполнении запроса.";
} else {
    $response_code = wp_remote_retrieve_response_code( $response );
    echo "Код ответа: " . $response_code;
}

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

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

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


$url = 'https://example.com/api/data';
$response = wp_remote_get( $url );
if ( ! is_wp_error( $response ) ) {
    $body = wp_remote_retrieve_body( $response );
    // Обработка полученных данных
} else {
    $error_message = $response->get_error_message();
    // Обработка ошибки
}

Как обработать ошибку при использовании функции wp_remote_get()?

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


$response = wp_remote_get( $url );
if ( ! is_wp_error( $response ) ) {
    $body = wp_remote_retrieve_body( $response );
    // Обработка полученных данных
} else {
    $error_message = $response->get_error_message();
    // Обработка ошибки
}

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

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


$args = array(
    'timeout' => 10,
);
$response = wp_remote_get( $url, $args );
if ( ! is_wp_error( $response ) ) {
    $body = wp_remote_retrieve_body( $response );
    // Обработка полученных данных
} else {
    $error_message = $response->get_error_message();
    // Обработка ошибки
}

Как обработать редиректы при использовании функции wp_remote_get()?

Функция wp_remote_get() автоматически обрабатывает редиректы при выполнении HTTP-запроса. Это означает, что если запрошенный URL перенаправляет на другую страницу, функция будет автоматически следовать за редиректом и вернет ответ с конечной страницей.


$response = wp_remote_get( 'http://example.com' );
if ( ! is_wp_error( $response ) ) {
    $response_code = wp_remote_retrieve_response_code( $response );
    if ( 200 === $response_code ) {
        // Редиректы обработаны успешно
        $body = wp_remote_retrieve_body( $response );
        // Дальнейшая обработка ответа
    } else {
        // Обработка ошибки
    }
} else {
    // Обработка ошибки
}

Как указать версию протокола HTTP при использовании функции wp_remote_get()?

По умолчанию функция wp_remote_get() использует версию протокола HTTP 1.0. Вы можете указать версию протокола HTTP 1.1, если это необходимо.


$args = array(
    'httpversion' => '1.1',
);
$response = wp_remote_get( 'http://example.com', $args );

Как указать пользовательский User-Agent при использовании функции wp_remote_get()?

Вы можете указать пользовательский User-Agent при выполнении HTTP-запроса с помощью функции wp_remote_get(). User-Agent — это строка, которую сервер веб-сайта видит в заголовке запроса и может использовать для определения типа клиента, который делает запрос.


$args = array(
    'user-agent' => 'My Custom User Agent',
);
$response = wp_remote_get( 'http://example.com', $args );

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

Функция wp_remote_get() позволяет отправить HTTP-запрос методом GET и получить ответ. Для передачи заголовков в запросе можно использовать параметр headers. Этот параметр может быть строкой или массивом заголовков.

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


$response = wp_remote_get( 'https://example.com', array(
    'headers' => array(
        'Authorization' => 'Bearer token',
        'Content-Type' => 'application/json',
    ),
) );

В данном примере мы отправляем GET-запрос на https://example.com и передаем два заголовка: Authorization и Content-Type.

Как отправить cookies в запросе с помощью функции wp_remote_get()?

Для отправки cookies в запросе с помощью функции wp_remote_get() можно использовать параметр cookies. Этот параметр должен быть массивом cookies.

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


$response = wp_remote_get( 'https://example.com', array(
    'cookies' => array(
        'cookie_name' => 'cookie_value',
    ),
) );

В данном примере мы отправляем GET-запрос на https://example.com и передаем одну cookie с именем cookie_name и значением cookie_value.

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

Функция wp_remote_get() предназначена для отправки GET-запросов, поэтому не предусматривает отправку тела запроса. Если вам необходимо отправить тело запроса, рекомендуется использовать функцию wp_remote_post().

Функция wp_remote_get() позволяет выполнить HTTP-запрос методом GET и получить ответ. С помощью параметров headers и cookies можно передать заголовки и cookies в запросе соответственно. Функция не предусматривает отправку тела запроса. Для этого рекомендуется использовать функцию wp_remote_post().

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

  • Функция wp_remote_post(): Performs an HTTP request using the POST method and returns its response.
  • Функция wp_remote_head(): Performs an HTTP request using the HEAD method and returns its response.
  • Функция wp_remote_request(): Performs an HTTP request and returns its response.
  • Хук http_api_debug: Fires after an HTTP API response is received and allows debugging information to be logged.
  • Хук http_response: Fires after an HTTP API response is received.
  • Хук http_request_args: Filters the arguments for an HTTP request.
  • Класс WP_Http: Provides an API for making HTTP requests.
  • Класс WP_Http_Cookie: Represents an HTTP cookie.
  • Класс WP_Http_Encoding: Handles HTTP content encoding and decoding.
Обсуждение