wp_remote_post()

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

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

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

Функция отправляет POST-запрос на указанный URL и возвращает ответ в виде массива или объекта WP_Error в случае ошибки.

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

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

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

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

  • $url (обязательный) — URL, на который будет отправлен запрос.
  • $args (необязательный) — массив с дополнительными аргументами запроса. Подробнее об этих аргументах можно узнать в документации к методу WP_Http::request().
  • $url (строка, обязательный) — URL для получения данных.
  • $args (массив, необязательный) — аргументы запроса. Подробнее об этих аргументах можно узнать в документации к методу WP_Http::request().

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

<?php
$args = array(
    'method'    => 'POST',
    'timeout'   => 5,
    'redirection' => 5,
    'httpversion' => '1.0',
    'user-agent' => 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ),
    'reject_unsafe_urls' => false,
    'blocking'  => true,
    'headers'   => array(),
    'cookies'   => array(),
    'body'      => null,
    'compress'  => false,
    'decompress' => true,
    'sslverify' => true,
    'sslcertificates' => ABSPATH . WPINC . '/certificates/ca-bundle.crt',
    'stream'    => false,
    'filename'  => null,
    'limit_response_size' => null
);
$response = wp_remote_post( '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» с использованием заданных аргументов. Если запрос выполнен успешно, то выводится код ответа и тело ответа. В случае ошибки выводится сообщение об ошибке.

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

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


$url = 'https://example.com/api/endpoint';
$args = array(
    'method' => 'POST',
    'body' => array(
        'param1' => 'value1',
        'param2' => 'value2'
    )
);
$response = wp_remote_post( $url, $args );
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;
    echo "Тело ответа: " . $response_body;
}

Получение ответа на POST-запрос


$url = 'https://example.com/api/endpoint';
$args = array(
    'method' => 'POST',
    'body' => array(
        'param1' => 'value1',
        'param2' => 'value2'
    )
);
$response = wp_remote_post( $url, $args );
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;
    echo "Тело ответа: " . $response_body;
}

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


$url = 'https://example.com/api/endpoint';
$args = array(
    'timeout' => 10
);
$response = wp_remote_post( $url, $args );
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;
    echo "Тело ответа: " . $response_body;
}

Установка количества разрешенных перенаправлений


$url = 'https://example.com/api/endpoint';
$args = array(
    'redirection' => 3
);
$response = wp_remote_post( $url, $args );
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;
    echo "Тело ответа: " . $response_body;
}

Установка версии протокола HTTP


$url = 'https://example.com/api/endpoint';
$args = array(
    'httpversion' => '1.1'
);
$response = wp_remote_post( $url, $args );
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;
    echo "Тело ответа: " . $response_body;
}

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

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

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

Пример кода:


$url = 'https://example.com/api/endpoint';
$args = array(
    'body' => array(
        'param1' => 'value1',
        'param2' => 'value2'
    )
);
$response = wp_remote_post( $url, $args );
if ( ! is_wp_error( $response ) ) {
    // Запрос успешно выполнен
    $body = wp_remote_retrieve_body( $response );
    // Обработка ответа от сервера
} else {
    // Обработка ошибки
    $error_message = $response->get_error_message();
    // Вывод сообщения об ошибке
}

Как обработать ошибку при выполнении POST-запроса с помощью функции wp_remote_post()?

При выполнении POST-запроса с помощью функции wp_remote_post() возможны ошибки, которые необходимо обработать.

Пример кода:


$response = wp_remote_post( $url, $args );
if ( is_wp_error( $response ) ) {
    $error_message = $response->get_error_message();
    // Вывод сообщения об ошибке
}

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

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

Пример кода:


$args = array(
    'timeout' => 10
);
$response = wp_remote_post( $url, $args );

Как обработать ответ от сервера после выполнения POST-запроса с помощью функции wp_remote_post()?

После выполнения POST-запроса с помощью функции wp_remote_post() можно получить ответ от сервера и обработать его.

Пример кода:


$response = wp_remote_post( $url, $args );
if ( ! is_wp_error( $response ) ) {
    $body = wp_remote_retrieve_body( $response );
    // Обработка ответа от сервера
}

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

Для добавления заголовков к POST-запросу с помощью функции wp_remote_post(), необходимо передать массив с заголовками в параметр $args. Заголовки могут быть переданы в виде строки или массива.

Пример кода:


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

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

Для использования SSL-сертификата при выполнении POST-запроса с помощью функции wp_remote_post(), необходимо указать путь к файлу сертификата в параметре sslcertificates.

Пример кода:


$args = array(
    'sslcertificates' => '/path/to/certificate.crt'
);
$response = wp_remote_post( $url, $args );

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

Для отправки файла вместе с POST-запросом с помощью функции wp_remote_post(), необходимо указать путь к файлу в параметре body и установить параметр method в ‘POST’.

Пример кода:


$args = array(
    'method' => 'POST',
    'body' => array(
        'file' => '@/path/to/file.jpg'
    )
);
$response = wp_remote_post( $url, $args );

Как ограничить размер ответа от сервера при выполнении POST-запроса с помощью функции wp_remote_post()?

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

Пример кода:


$args = array(
    'limit_response_size' => 1024 // Ограничение размера ответа до 1 КБ
);
$response = wp_remote_post( $url, $args );

Функция wp_remote_post() позволяет выполнять HTTP-запросы методом POST и возвращать ответ. С помощью данной функции можно добавлять заголовки к запросу, использовать SSL-сертификаты, отправлять файлы и ограничивать размер ответа от сервера. Это мощный инструмент для разработчиков WordPress, который обеспечивает гибкость и контроль при работе с удаленными серверами.

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

  • Функция wp_remote_get(): выполняет HTTP-запрос методом GET и возвращает его ответ.
  • Функция wp_remote_retrieve_body(): возвращает тело ответа HTTP-запроса.
  • Функция wp_remote_retrieve_header(): возвращает заголовок ответа HTTP-запроса по его имени.
  • Функция wp_remote_retrieve_headers(): возвращает все заголовки ответа HTTP-запроса.
  • Функция wp_remote_retrieve_response_code(): возвращает код ответа HTTP-запроса.
  • Функция wp_remote_retrieve_response_message(): возвращает сообщение ответа HTTP-запроса.
  • Хук http_api_debug: позволяет отладить HTTP-запросы и ответы, добавляя информацию в журнал ошибок.
  • Класс WP_Http: предоставляет методы для выполнения HTTP-запросов и работы с HTTP-ответами.
Обсуждение