Функция wp_remote_retrieve_response_message()
используется для извлечения текстового сообщения, связанного с HTTP-ответом. Сообщение, возвращаемое сервером, описывает статус запроса в текстовой форме. Например, при успешном запросе может вернуться сообщение «OK», а при запросе к несуществующему ресурсу — «Not Found».
wp_remote_retrieve_response_message( array|WP_Error $response ): string
Описание
Функция возвращает сообщение ответа, которое даёт более подробную информацию о результате HTTP-запроса. Важно отметить, что если передан неверный параметр, функция вернёт пустую строку.
Параметры
- $response (array|WP_Error, обязательный): HTTP-ответ, полученный с помощью одной из функций WordPress, таких как
wp_remote_get()
,wp_remote_post()
илиwp_remote_request()
. Если запрос завершился ошибкой, это будет объектWP_Error
.
Возвращаемое значение
- строка: Сообщение ответа в виде строки (например, «OK», «Not Found»). Пустая строка, если был передан неверный параметр.
Пример использования 1: Получение сообщения ответа
Пример показывает, как получить и вывести сообщение ответа на успешный запрос.
// Отправляем GET-запрос на удалённый сервер
$response = wp_remote_get( 'https://httpbin.org/status/200' );
// Получаем сообщение ответа
$response_message = wp_remote_retrieve_response_message( $response );
echo 'Сообщение ответа: ' . $response_message; // Вывод: Сообщение ответа: OK
В этом примере мы отправляем запрос на сервер httpbin.org
, который возвращает сообщение «OK» для успешного запроса.
Пример использования 2: Проверка сообщения ошибки
Этот пример демонстрирует, как использовать функцию для обработки ошибки в запросе и возврата сообщения об ошибке.
// Отправляем запрос к несуществующему ресурсу
$response = wp_remote_get( 'https://httpbin.org/status/404' );
// Получаем сообщение ответа
$response_message = wp_remote_retrieve_response_message( $response );
// Проверяем сообщение ответа
if ( 'Not Found' === $response_message ) {
echo 'Ошибка: Ресурс не найден.';
} else {
echo 'Ответ сервера: ' . $response_message;
}
Здесь мы отправляем запрос к несуществующему ресурсу, и сервер возвращает сообщение «Not Found», которое мы выводим для пользователя.
Пример использования 3: Обработка ответов API
При работе с API полезно проверять как код ответа, так и сообщение, чтобы правильно обработать результаты. Этот пример демонстрирует, как можно работать с API.
// Функция для получения данных о фильме с внешнего API
function get_movie_info( $movie_id ) {
$url = 'https://api.example.com/movies/' . absint( $movie_id );
$response = wp_remote_get( $url );
// Получаем код и сообщение ответа
$response_code = wp_remote_retrieve_response_code( $response );
$response_message = wp_remote_retrieve_response_message( $response );
// Проверка успешного запроса
if ( 200 === $response_code ) {
return wp_remote_retrieve_body( $response ); // Возвращаем тело ответа
} else {
return new WP_Error( $response_code, $response_message );
}
}
// Использование функции
$movie_data = get_movie_info( 12345 );
// Обработка ответа
if ( is_wp_error( $movie_data ) ) {
echo 'Ошибка: ' . wp_strip_all_tags( $movie_data->get_error_message() );
} else {
echo 'Информация о фильме: ' . $movie_data;
}
Здесь мы отправляем запрос к API для получения информации о фильме. Если запрос успешен, возвращаем тело ответа; если произошла ошибка, выводим сообщение об ошибке, которое было возвращено сервером.
Пример использования 4: Логирование ошибок запросов
Если вы работаете с важными запросами, может быть полезно логировать ошибки для дальнейшего анализа. Вот пример, как это можно сделать с использованием функции wp_remote_retrieve_response_message()
.
// Отправляем запрос на внешний сервер
$response = wp_remote_get( 'https://example.com/nonexistent-resource' );
// Получаем сообщение ответа
$response_message = wp_remote_retrieve_response_message( $response );
// Логируем ошибки, если код ответа 4xx или 5xx
$response_code = wp_remote_retrieve_response_code( $response );
if ( $response_code >= 400 ) {
error_log( 'Ошибка: ' . $response_message . ' (Код: ' . $response_code . ')' );
} else {
echo 'Запрос успешен: ' . $response_message;
}
Этот пример показывает, как можно автоматически записывать в лог ошибки, если сервер вернул статус ошибки (например, 404 или 500), с указанием сообщения ответа.
Пример использования 5: Обработка запросов с кэшированием
При работе с внешними API можно кэшировать успешные запросы, чтобы не нагружать сервер лишними запросами. В случае ошибки можно обработать её сразу.
// Запрашиваем данные с внешнего API
$response = wp_remote_get( 'https://api.example.com/data' );
// Получаем код ответа и сообщение
$response_code = wp_remote_retrieve_response_code( $response );
$response_message = wp_remote_retrieve_response_message( $response );
// Обрабатываем ответ
if ( 200 === $response_code ) {
$data = wp_remote_retrieve_body( $response );
set_transient( 'api_data_cache', $data, 3600 ); // Кэшируем данные на 1 час
echo 'Данные успешно получены и закэшированы.';
} else {
echo 'Ошибка получения данных: ' . $response_message;
}
Здесь успешный ответ кэшируется на определённое время, а в случае ошибки выводится сообщение, чтобы пользователь знал, что что-то пошло не так.
Заключение
Функция wp_remote_retrieve_response_message()
— это удобный способ получения текстового сообщения ответа от сервера. Она полезна для обработки как успешных запросов, так и ошибок, что делает её особенно важной при работе с API и интеграциями с внешними сервисами.