WP_REMOTE_POST() │ WP 2.7.0: Как использовать функцию wp_remote_post() для отправки POST-запросов.

WP_REMOTE_POST() │ WP 2.7.0

Функция wp_remote_post() используется для отправки HTTP-запросов на удалённые страницы с использованием метода POST. Она возвращает результат в виде массива, который включает HTTP-заголовки и содержимое веб-страницы. По сути, это обёртка для библиотеки cURL.

Как использовать куки

Вы можете использовать куки в запросах, передавая их в виде массива объектов WP_Http_Cookie.

Для метода GET используйте функцию wp_remote_get().

Используемые функции

  • _wp_http_get_object()
  • WP_Http::post()
  • WP_Http::request()

Используется в

  • wp_check_browser_version()

Важно!

Функция не имеет хуков (hooks).

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

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

Если сервер возвратил статусы, такие как 500 или 404, объект WP_Error не будет создан — данные ответа будут возвращены как обычно.

Пример массива, который может быть возвращён:

Array (
    [headers] => Array (
            [date]          => Thu, 30 Sep 2010 15:16:36 GMT
            [server]        => Apache
            [x-powered-by]  => PHP/5.3.3
            [x-server]      => 10.90.6.243
            [expires]       => Thu, 30 Sep 2010 03:16:36 GMT
            [cache-control] => Array (
                [0] => no-store, no-cache, must-revalidate
                [1] => post-check=0, pre-check=0
            )

            [vary]           => Accept-Encoding
            [content-length] => 1641
            [connection]     => close
            [content-type]   => application/php
        )
    [body]     => HTML-код веб-страницы!
    [response] => Array (
                => 200
            [message] => OK
        )

    [cookies] => Array()
)

Шаблон использования

wp_remote_post( $url, array(
    'timeout'     => 5,
    'redirection' => 5,
    'httpversion' => '1.0',
    'blocking'    => true,
    'headers'     => array(),
    'body'        => null, // параметры запроса в массиве
    'cookies'     => array()
) );

Аргументы использования

Функция wp_remote_post() принимает два аргумента:

  • $url (string, обязательный): URL сайта, который нужно запросить.
  • $args (array): параметры запроса.

Основные параметры ($args)

  • body — массив параметров запроса, где ключ — это имя параметра, а значение — его значение, например: array( 'foo'=>'val', 'bar'=>'val' ).

  • timeout — время в секундах, после которого соединение будет разорвано, а ошибка возвращена. Значение по умолчанию: 5 секунд.

  • redirection — количество раз, которое следует следовать за перенаправлением, прежде чем прекратить попытки. Значение по умолчанию: 5.

  • user-agent — позволяет задавать user-agent. Значение по умолчанию: "WordPress/4.0; http://example.com".

  • blocking — позволяет выполнять запросы в неблокирующем режиме. По умолчанию: true. Если установить false, PHP продолжит выполнение кода, не дожидаясь завершения запроса.

  • compress — позволяет отправлять тело запроса в сжатом виде. По умолчанию: true.

  • decompress — отвечает за заголовок accept-encoding в запросе. Если установить в true, сервер получит информацию о том, что сжатые данные принимаются. По умолчанию: true.

  • sslverify — если true, проверяет, действителен ли SSL-сертификат (не самоподписанный). По умолчанию: true.

Полный список аргументов

Для полного списка аргументов посмотрите функцию wp_remote_request().

Примеры

Пример 1: Отправка POST-данных на удалённый URL

$url = 'http://example.com/profile';
$args = array(
    'timeout'     => 45,
    'redirection' => 5,
    'httpversion' => '1.0',
    'blocking'    => true,
    'headers'     => array(),
    'body'        => array( 'username' => 'bob', 'password' => '1234xyz' ),
    'cookies'     => array()
);
$response = wp_remote_post( $url, $args );

// Проверка на ошибку
if ( is_wp_error( $response ) ) {
   $error_message = $response->get_error_message();
   echo "Что-то пошло не так: $error_message";
} else {
   echo 'Ответ: 
';
   print_r( $response );
   echo '

';
}

В переменной $response['body'] хранится HTML-код страницы.

Заметки

  • Посмотрите wp_remote_request() для получения дополнительной информации о формате массива ответа.
  • Смотрите WP_Http::request() для информации о стандартных аргументах.

Изменения

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

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

  • status_header()
  • wp_get_http_headers()
  • wp_http_validate_url()
  • wp_remote_get()
  • wp_remote_head()
  • 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_remote_retrieve_response_message()
  • wp_safe_remote_request()

Эта статья должна помочь вам разобраться с функцией wp_remote_post() и её применением в WordPress.

Leave a Reply

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