# Функция WP_REMOTE_REQUEST() │ WP 2.7.0
Функция WP_REMOTE_REQUEST() позволяет отправлять HTTP-запросы и получать ответ в виде массива. Это полезно, когда ваше приложение необходимо взаимодействовать с другими веб-сервисами.
## Обертки для этой функции
Существуют специальные функции, которые могут упростить работу с HTTP-запросами:
- **GET**: wp_remote_get()
- **POST**: wp_remote_post()
- **HEAD**: wp_remote_head()
Если вы отправляете запрос на динамический URL-адрес, который может возвращать любые данные, рекомендуется использовать безопасную функцию: wp_safe_remote_request().
### Использование
Функция использует методы:
- _wp_http_get_object()
- WP_Http::request()
### Возвращаемое значение
Функция возвращает массив или ошибку WP_Error в случае неудачи. Структура возвращаемого массива:
```php
$res = array(
'headers' => array(),
'response' => array(
'code' => int,
'message' => string
),
'body' => string,
'cookies' => array(),
'filename' => string
);
- Индекс
headersсодержит заголовки ответа. - Индекс
bodyсодержит содержимое ответа.
Для получения информации из заголовков, например, User-Agent, можно использовать:
$user_agent = $res['headers']['user-agent'];
Применение функции
wp_remote_request( $url, $args );
Параметры
$url(string, обязательный): URL сайта, к которому отправляется запрос.-
$args(array): аргументы запроса, в том числе:-
body: массив параметров запроса, где ключ - это имя параметра, а значение - это его значение.
array( 'foo' => 'val', 'bar' => 'val' )Примечание: используется только для методов PUT и POST. По умолчанию: null
-
method: HTTP метод запроса. Возможные значения: POST, GET, HEAD, PUT, DELETE. По умолчанию: 'GET'.
-
headers: заголовки для отправки с запросом (могут быть строкой или массивом). По умолчанию: пустой массив.
-
cookies: массив куки для запроса. Подробнее:
WP_Http::normalize_cookies()иWP_Http::buildCookieHeader(). По умолчанию: пустой массив. -
timeout: время в секундах, через которое подключение прерывается, если не удается выполнить запрос. По умолчанию: 5.
-
redirection: количество перенаправлений, которое нужно выполнить перед тем, как остановиться. По умолчанию: 5.
-
user-agent: позволяет установить пользовательский агент (user-agent), который будет отправляться с запросом. По умолчанию: 'WordPress/' . $wp_version . '; ' . get_bloginfo('url').
-
blocking: определяет, будет ли запрос блокирующим. По умолчанию: true. Установка false позволяет PHP продолжать выполнение скрипта, пока идет выполнение запроса. Это полезно, когда вы не заботитесь о результате запроса.
-
compress: разрешает сжатие тела запроса. По умолчанию: true.
-
sslverify: true - проверяет действительность SSL сертификата. Если вы уверены, что сайт надежен, можно установить false. По умолчанию: true.
-
stream: позволяет записывать данные в файл. Если true и параметр filename не указан, данные будут записаны в файл с именем basename(URL) во временной директории WordPress. По умолчанию: false.
-
limit_response_size: максимальный размер ответа в байтах. По умолчанию: null.
-
reject_unsafe_urls: если true, проверяет переданный URL на безопасность с помощью функции
wp_http_validate_url(). По умолчанию: false.
-
Примеры использования
Пример 1: Получение данных пользователя GitHub
GitHub предоставляет API. Давайте используем его для получения данных пользователя с именем erusev.
$response = wp_remote_request( 'https://api.github.com/users/erusev' );
print_r( $response );
Этот код выведет массив, содержащий заголовки и тело ответа, например:
Array
(
[headers] => Array
(
[server] => GitHub.com
...
)
[body] => {"login": "erusev", "id":184170, ...}
[response] => Array
(
=> 200
[message] => OK
)
...
)
Пример 2: Установка куки для запроса
Вот пример, как задать куки вместе с запросом в WordPress:
$request_args = [
'method' => 'POST',
'headers' => [
'Authorization' => 'Basic ' . base64_encode( 'log:pass' ),
],
'cookies' => [
'my_cook' => 'my_cook value',
],
];
$resp = wp_remote_request( $request_args );
Также можно использовать объект для задания дополнительных параметров куки:
$request_args = [
'method' => 'POST',
'headers' => [
'Authorization' => 'Basic ' . base64_encode( 'log:pass' ),
],
'cookies' => [
new WP_Http_Cookie( [
'name' => 'my_cook',
'value' => 'my_cook value',
'expires' => time() + ( DAY_IN_SECONDS * 7 ),
'path' => '/',
] ),
],
];
$resp = wp_remote_request( $request_args );
Примечания
- Подробности по умолчанию: смотрите
WP_Http::request()для получения информации по умолчанию аргументов.
Изменения
- С 2.7.0 года: функция была добавлена в WordPress.
Связанные функции
wp_get_http_headers()wp_http_validate_url()wp_remote_get()wp_remote_post()wp_remote_retrieve_body()wp_remote_retrieve_header()wp_safe_remote_request()