Я строю интеграцию mailchimp, и им требуется вызов POST с кодом JSON.
Нет, я использую этот код, который на самом деле работает :
$data = wp_remote_post($url, array(
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'body' => json_encode($array_with_parameters),
'method' => 'POST'
));
Но он возвращает предупреждение PHP
Предупреждение: http_build_query (): параметр 1 должен быть массивом или объектом. Неверное значение указано в ../wp-includes/Requests/Transport/cURL.php в строке 507
Как этого избежать?
Я пытался просто использовать обычный массив в индексе body, но MailChimp возвращает ошибку синтаксического анализа JSON.
json
http-api
plugin-mailchimp
wp-remote-post
а-верстальщик
источник
источник
Ответы:
Попробуйте установить
data_format
параметр в вашем запросе так:Похоже, что формат может быть по умолчанию
query
, и в этом случае WordPress пытается отформатировать данные с использованиемhttp_build_query
, что создает проблемы, так как вы уже форматируете тело как строку. Вот соответствующая регистрацияwp-includes/class-http.php
:Так как ваша ошибка исходит из строки 507
wp-includes/Requests/Transport/cURL.php
, мы можем видеть, что это корневой вызовhttp_build_query
:источник