wp_remote_request() WP 2.7.0

Створює будь-який тип HTTP запиту та повертає відповідь запиту у вигляді масиву.

Для цієї функції є функції-обгортки, для різних типів запитів:

Якщо ви надсилаєте запит з динамічно зібраним посиланням, в яке можуть потрапити дані від вас не залежать, такий запит краще робити за допомогою безпечної функції: wp_safe_remote_request()

Працює на основі:
_wp_http_get_object() ,
WP_Http::request()

Хуків немає.

Повертає

Массив|WP_Error. Відповідь запиту у вигляді масиву чи об’єкт WP_Error у разі невдалого запиту.

Структура масиву з даними відповіді:

$res = array(
	'headers' => array,
	'response' => array(
		'code' => int,
		'message' => string
	),
	'body' => string,
	'cookies' => array,
	'filename' => string
);

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

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

Використання

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

Параметри запиту. Можуть бути:

  • body (рядок/масив)
    Тіло запиту, яке потрібно надіслати із запитом.
    Зазвичай тут вказується масив параметрів запиту, де ключ це назва параметра, а значення – значення параметра, пр:array('foo'=>'val', 'bar'=>'val')

    Примітка: Використовується лише за методами запиту PUT, 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 (логічний)
    Чи потрібно очікувати відповіді на запит? Якщо встановити false, то запит буде відправлено і php код негайно продовжить роботу, не чекаючи відповіді. Однак за відповіддю функції можна буде дізнатися вдалося відправити запит чи ні, але неможливо буде дізнатися, що відповів сервер, куди цей запит був відправлений.

    Майте на увазі, що не всі сервери підтримують цю функцію і при blocking=false можливо, що блокування все одно буде працювати.
    Типово: true

  • headers (рядок/масив)
    Заголовки, які потрібно надіслати із запитом.
    За замовчуванням: array()

  • cookies (масив)
    Куки, які потрібно надіслати із запитом. Див: WP_Http::buildCookieHeader() .
    За замовчуванням: array()

  • compress (логічний)
    Дозволяє надсилати тіло запиту (body) у стислому вигляді.
    Типово: false

  • decompress (логічний)
    за промовчанням true. Відповідає за параметр accept-encoding. Якщо встановити в false, то сервера в заголовках буде сказано, що приймаються стислі дані і при отриманні стислі дані тіла (body) будуть розпаковані.
    Типово: true

  • sslverify (логічний)
    true – перевірятиме SSL сертифікат (підпис, актуальність до сайту) та перерве запит, якщо перевірка не буде пройдена.
    false– Прибирає перевірку сертифіката. Якщо ви запитуєте https і знаєте, що перевірка може бути не пройдена, але дані в запиті не несуть жодної цінності, якщо їх перехопить хтось інший, то можна прибрати перевірку сертифіката.
    Типово: 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()

Приклади

0

#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; включаючисубдомини; 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] =>
)
*/
0

#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 );

Або можна вказати об’єкт, в якому можна вказати додаткові параметри cookie:

$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_Cookie::__construct() .

нотатки

список змін

З версії 2.7.0Введено.

Код wp_remote_request() WP 6.0.2

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *