WordPress как на ладони
Дешевый WordPress пакет для разработки Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

wp_remote_request() WP 2.7.0

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

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

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

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

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

Работает на основе: _wp_http_get_object(), WP_Http::request()

Хуков нет.

Возвращает

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

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

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 (массив)
    Куки, которые нужно отправить с запросом.
    По умолчанию: 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_remote_request: wp-includes/http.php VER 4.9.8

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

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

Из метки: HTTP API (curl remote)

2 коммента
Здравствуйте, !     Войти . Зарегистрироваться