wp_remote_request

Создает любой типа HTTP запроса и возвращает ответ запроса в виде массива.

Для этой функции есть функции-обертки, для разных типов запросов:

  • GETwp_remote_get()
  • POSTwp_remote_post()
  • HEADwp_remote_head()

Заголовки ответа находятся в индексе ответа headers, который содержит массив данных заголовка ответа. Например получить код ответа можно так: $res['headers']['status'].

Тело (контент) ответа находится в индексе body.

Если вы отправляете запрос с динамически собранной ссылкой, в которую могут попасть данные от вас не зависящие, то такой запрос лучше делать с помощью безопасной функции: wp_safe_remote_request()

Хуков нет.

Возвращает

WP_Error/массив. Ответ запроса в виде массива или объект WP_Error в случае неудачного запроса.

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

wp_remote_request( $url, $args );
$url(строка) (обязательный)
УРЛ куда нужно отправить запрос и получить ответ.
$args(массив)

Параметры запроса. Могут быть:

  • body (строка/массив)
    Тело запроса, которое нужно отправить с запросом.
    Обычно тут указывается массив параметров запроса, где ключ это название параметра, а значение – это значение параметра, пр: array(‘foo’=>’val’, ‘bar’=>’val’)
    ЗАМЕТКА: Используется только при типе запроса POST.
    По умолчанию: null

  • method (строка)
    HTTP метод запроса. Может быть: POST, GET, HEAD, PUT, DELETE.
    По умолчанию: ‘GET’

  • timeout (число)
    Максимальное время в секундах на получение данных. Время можно изменить в плагине через фильтр http_request_timeout.
    По умолчанию: 5

  • redirection (число)
    Сколько раз переходить по редиректам, если они есть. Значение можно изменить в плагине через фильтр http_request_redirection_count.
    По умолчанию: 5

  • user-agent (строка)
    User-agent устанавливаемый при запросе. По умолчанию WordPress/4.0; http://www.example.com, где 4.0 – текущая версия WP, а http://www.example.com – адрес вашего сайта. Значение можно изменить через фильтр http_headers_useragent.
    По умолчанию: ‘WordPress/’ . $wp_version . ‘; ‘ . get_bloginfo(‘url’)

  • blocking (логический)
    Позволяет выполнять не блокирующие запросы. По умолчанию true. Если установить в false, то это позволит PHP продолжать работу, пока запрос обрабатывается. Полезно это, когда вам нужно просто отправить запрос и не важно был ли он обработан и что он вернул. (имейте ввиду, что не все серверы поддерживают эту функцию и даже установив этот параметр в false, блокировка все равно будет. Альтернатива: установить timeout в 1 секунду, но делать это не рекомендуется, т.к. запрос может быть не послан вообще).
    По умолчанию: true

  • headers (строка/массив)
    Заголовки, которые нужно отправить с запросом.
    По умолчанию: array()

  • cookies (массив)
    Куки, которые нужно отправить с запросом.
    По умолчанию: array()

  • compress (логический)
    Позволяет отправлять тело запроса (body) в сжатом виде.
    По умолчанию: false

  • decompress (логический)
    по умолчанию true. Отвечает за параметр accept-encoding. Если установить в false, то в серверу в заголовках будет сказано, что принимаются сжатые данные и при получении сжатые данные тела (body) будут распакованы.
    По умолчанию: true

  • sslverify (логический)
    логический. true – будет проверять SSL сертификат (подпись, актуальность к сайту) и прервет запрос, если проверка не будет пройдена. Если вы запрашиваете https и знаете что проверка может быть не пройдена, но сайту можно доверять, то уберите проверку сертификата – поставьте в этом параметре false.
    По умолчанию: true

  • sslcertificates (строка)
    Абсолютный путь до файла SSL сертификата “.crt”.
    По умолчанию: ABSPATH . WPINC .’/certificates/ca-bundle.crt’

  • stream (логический)
    Нужно ли записывать данные в файл. Если установлено true и параметр filename не указан, то данные будут записываться в файл с названием basename(URL) во временную директорию WP.
    По умолчанию: false

  • filename (строка)
    Название файла (путь), куда нужно записывать поток, когда параметр stream выставлен в true.
    По умолчанию: null

  • limit_response_size (число)
    Размер в байтах, котором нужно ограничить ответ.
    По умолчанию: null

  • reject_unsafe_urls
    Очищать ли передаваемый URL через функцию wp_http_validate_url()
    По умолчанию: false
Полный список параметров смотрите в коде класса WP_Http

По умолчанию: array()

Примеры

#1 Получим данные пользователя GitHub

GitHub предоставляет API давайте получим данные пользователя erusev

$response = wp_remote_request( 'https://api.github.com/users/erusev' );
print_r( $response );

/* выведет:
Array
(
	[headers] => Array
		(
			[server] => GitHub.com
			[date] => Thu, 10 Dec 2015 10:33:03 GMT
			[content-type] => application/json; charset=utf-8
			[connection] => close
			[status] => 200 OK
			[x-ratelimit-limit] => 60
			[x-ratelimit-remaining] => 57
			[x-ratelimit-reset] => 1449746444
			[cache-control] => public, max-age=60, s-maxage=60
			[last-modified] => Mon, 23 Nov 2015 13:19:37 GMT
			[etag] => W/"c8dad0c81351ce6451a9b7de7f7f0d8b"
			[vary] => Array
				(
					[0] => Accept
					[1] => Accept-Encoding
				)

			[x-github-media-type] => github.v3
			[x-xss-protection] => 1; mode=block
			[x-frame-options] => deny
			[content-security-policy] => default-src 'none'
			[access-control-allow-credentials] => true
			[access-control-expose-headers] => ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
			[access-control-allow-origin] => *
			[strict-transport-security] => max-age=31536000; includeSubdomains; preload
			[x-content-type-options] => nosniff
			[x-served-by] => a241e1a8264a6ace03db946c85b92db3
			[content-encoding] => gzip
			[x-github-request-id] => 05659C50:1D261:3E06B1C:566954DF
		)

	[body] => {"login":"erusev","id":184170 и т.д.}
	[response] => Array
		(
			[code] => 200
			[message] => OK
		)

	[cookies] => Array
		(
		)

	[filename] => 
)
*/

Код из


wp-includes/http.php

WP 4.7.2

<?php
function wp_remote_request($url, $args = array()) {
	$http = _wp_http_get_object();
	return $http->request( $url, $args );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *