WP_REMOTE_RETRIEVE_RESPONSE_MESSAGE() в WordPress 2.7.0: Получение сообщения ответа

WP_REMOTE_RETRIEVE_RESPONSE_MESSAGE() │ WP 2.7.0

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

Важно

Если передать некорректное значение параметра, функция вернет пустую строку.

Возвращаемое значение

  • String: Сообщение ответа. Будет пустой строкой, если передано некорректное значение параметра.

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

Для использования функции необходимо передать ей параметр $response.

wp_remote_retrieve_response_message( $response );

Где:

  • $response (array|WP_Error): (обязательный) HTTP-ответ.

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

Пример 1: Получение сообщения ответа

$res = wp_remote_get('http://wp-kama.com');
echo wp_remote_retrieve_response_message( $res ); //> OK

$res = wp_remote_get('http://wp-kama.com/error404');
echo wp_remote_retrieve_response_message( $res ); //> Not Found

Эти строки показывают, как можно получить сообщение ответа от сервера. В первом случае сервер возвращает "OK", а во втором случае "Not Found", что означает, что страница не найдена.

Пример 2: Получение информации о фильме с КиноПоиска

Этот пример демонстрирует, как получить информацию о фильме с сайта КиноПоиск и проверить ответ на наличие ошибок.

/**
 * Получает информацию о фильме с КиноПоиска.
 * Информация предоставлена http://docs.kinopoiskapi.apiary.io/.
 *
 * @param int $id ID фильма на сайте
 * @return string|WP_Error Возвращает тело ответа при успехе и объект WP_Error при неудаче
 */
function kinopoisk_get_movie( $id ) {
    // Параметры GET-запроса
    $params = array(
        'filmID' => absint( $id ),
    );

    // Создание URL с параметрами
    $url = 'http://api.kinopoisk.cf/getFilm';
    $url = add_query_arg( $params, esc_url_raw($url) );

    // Запрос
    $response = wp_remote_get( $url );

    // Проверка кода ответа
    $response_code    = wp_remote_retrieve_response_code( $response );
    $response_message = wp_remote_retrieve_response_message( $response );
    $response_body    = json_decode(wp_remote_retrieve_body( $response ));

    if ( 200 != $response_code && ! empty( $response_message ) ) {
        return new WP_Error( $response_code, $response_message );
    }
    if ( 200 != $response_code ) {
        return new WP_Error( $response_code, 'Неизвестная ошибка' );
    }
    if( ! $response_body ) {
        return new WP_Error( 'nodata', 'Нет данных о фильме или такого фильма нет в базе' );
    }

    return $response_body;
}

// Запрос
$res = kinopoisk_get_movie( 714888 );

// Вывод ошибки или информации
if ( is_wp_error( $res ) ) {
    echo 'Ошибка запроса IMDB: '. wp_strip_all_tags( $res->get_error_message() );
}
else {
    echo 'Фильм: "' . esc_html( $res->nameRU ) .' ('. (int) $res->year .'.) Рейтинг: '. $res->ratingData->rating;
}

// В результате получаем:
// Фильм: "Звёздные войны: Пробуждение силы" (2015). Рейтинг: 7.3

Этот код демонстрирует, как получить информацию о фильме по его ID. Если в процессе возникает ошибка, она будет обработана и выведена.

Изменения

Функция была введена в версии 2.7.0 WordPress.

Код функции

Функция wp_remote_retrieve_response_message() выглядит следующим образом:

function wp_remote_retrieve_response_message( $response ) {
    if ( is_wp_error( $response ) || ! isset( $response['response'] ) || ! is_array( $response['response'] ) ) {
        return '';
    }

    return $response['response']['message'];
}

Связанные функции

Вы можете использовать следующие функции для работы с HTTP-запросами:

  • status_header()
  • wp_get_http_headers()
  • wp_http_validate_url()
  • wp_remote_get()
  • wp_remote_head()
  • wp_remote_post()
  • wp_remote_request()
  • wp_remote_retrieve_body()
  • wp_remote_retrieve_cookie()
  • wp_remote_retrieve_cookie_value()
  • wp_remote_retrieve_cookies()
  • wp_remote_retrieve_header()
  • wp_remote_retrieve_headers()
  • wp_remote_retrieve_response_code()
  • wp_safe_remote_request()

Эти функции помогут вам более эффективно работать с удаленными запросами в WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *