wp_remote_post() WP 2.7.0

Надсилає HTTP запит методом POST. Результат містить HTTP заголовки, дані самої станиці та повертається у вигляді масиву. Обгортка для використання curl.

На запит можна передати дані cookies: передаються вони як масив об’єктів WP_Http_Cookie .

Для HTTP GET методу використовуйте wp_remote_get() .

Працює на основі:
_wp_http_get_object() ,
WP_Http::post() ,
WP_Http::request()
Основа для:
wp_check_browser_version()

Хуків немає.

Повертає

Массив|WP_Error.

  • Дані відповіді як масиву.
  • WP_Error повертається у разі невдалого запиту. Важливо! Якщо сервер повернув нестандартну помилку: 500, 404 і т.д., ви отримаєте дані відповіді, а не WP_Error.
Array
(
	[headers] => Array
		(
			[date] => Thu, 30 Sep 2010 15:16:36 GMT
			[server] => Apache
			[x-powered-by] => PHP/5.3.3
			[x-server] => 10.90.6.243
			[expires] => Thu, 30 Sep 2010 03:16:36 GMT
			[cache-control] => Array
				(
					[0] => no-store, no-cache, must-revalidate
					[1] => post-check=0, pre-check=0
				)

			[vary] => Accept-Encoding
			[content-length] => 1641
			[connection] => close
			[content-type] => application/php
		)
	[body] => <html>Це HTML код сторінки сайту!</html>
	[response] => Array
		(
			[code] => 200
			[message] => OK
		)

	[cookies] => Array
		(
		)

)

Шаблон використання

wp_remote_post( $url, array(
	'timeout' => 5,
	'redirection' => 5,
	'httpversion' => '1.0',
	'blocking' => true,
	'headers' => array(),
	'body' => null, // параметри запиту в масиві
	'cookies' => array()
)));

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

wp_remote_post($url, $args);
$url
(рядок) (обов’язковий)
URL-адреса запиту.
$args
(масив)

Аргументи запиту у вигляді масиву. Можуть бути:

  • body – масив параметрів запиту, де ключ це назва параметра та значення це значення параметра:array('foo'=>'val', 'bar'=>'val')

  • 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, запит буде відправлено на віддалений сервер, і результат повернеться в код, що викликає, негайно, код при цьому знатиме, чи був запит успішним або невдалим, але не отримає жодної відповіді від віддаленого сервера.

    Корисно це, коли вам потрібно просто відправити запит і не важливо, що він повернув. (не всі сервери підтримують цю функцію і навіть встановивши цей параметр у false, блокування все одно може бути. Альтернатива: встановити timeout в 0.01 секунду).

    Типово: true

  • compress – дозволяє відправляти тіло запиту (body) у стислому вигляді.
    Типово: true

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

  • sslverify – логічний. true – перевірятиме SSL сертифікат (підпис, актуальність до сайту) та перерве запит, якщо перевірка не буде пройдена. Якщо ви запитуєте https і знаєте, що перевірка може бути не пройдена, але сайту можна довіряти, то приберіть перевірку сертифіката – поставте в цьому параметрі false.
    Типово: true

За замовчуванням: array() (предустановки)

Повний список параметрів дивіться в описі функції wp_remote_request()

Приклади

0

#1 Відправить дані на віддалений УРЛ

Допустимо нам потрібно надіслати запит на УРЛ http://example.com/profile . POST дані потрібно надсилати у параметрі body:

$url = 'http://example.com/profile';
$ args = array (
	'timeout' => 45,
	'redirection' => 5,
	'httpversion' => '1.0',
	'blocking' => true,
	'headers' => array(),
	'body' => array( 'username' => 'bob', 'password' => '1234xyz' ),
	'cookies' => array()
);
$response = wp_remote_post( $url, $args );

// Перевірка помилки
if ( is_wp_error( $response ) ) {
   $error_message = $response->get_error_message();
   echo "Щось пішло не так: $ error_message";
} else {
   echo 'Відповідь: <pre>';
   print_r ($ Response);
   echo '</pre>';
}

У цьому прикладі $response[‘body’] міститиме html код сторінки, отриманої в результаті запиту.

нотатки

список змін

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

Код wp_remote_post() WP 6.0.2

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

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

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