Почему CURLOPT_POSTFIELDS не принимает json_encode?

CURLOPT_POSTFIELDS не принимает json_encode, но если я напрямую напишу json в CURLOPT_POSTFIELDS если он введен

Это возвращает ошибку

{«error»: «bad_request», «reason»: «Тело запроса должно быть объектом JSON»}

    $bd = "fiscont_db_catalogo_cuentas";
$ch = curl_init();

$document ='{"docs":[{"key":"baz","name":"bazzel"},{"key":"bar","name":"barry"}]}';

$json = json_encode($document);

echo $json;

curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1:5984/'.$bd.'/_bulk_docs');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); /* or PUT */
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type: application/json',
'Accept: */*'
));

curl_setopt($ch, CURLOPT_USERPWD, 'root:addc1243c');

$response = curl_exec($ch);

echo $response;

curl_close($ch);

но это возвращается:

[{ «КИ»: верно, «идентификатор»: «8b3c672ffd4b8dcd7da313e9e9011243», «оборот»: «1-f5f3f3e496c72307975a69c73fd53d42»}, { «КИ»: верно, «идентификатор»: «8b3c672ffd4b8dcd7da313e9e9011c5a», «оборот»: «1-8ad0e70d5e6edd474ec190eac2376bde «}]
    $bd = "fiscont_db_catalogo_cuentas";
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1:5984/'.$bd.'/_bulk_docs');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); /* or PUT */
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"docs\":[{\"key\":\"baz\",\"name\":\"bazzel\"},{\"key\":\"bar\",\"name\":\"barry\"}]}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type: application/json',
'Accept: */*'
));

curl_setopt($ch, CURLOPT_USERPWD, 'root:addc1243c');

$response = curl_exec($ch);

echo $response;

curl_close($ch);

-1

Решение

json_encode принимает массив или объект в качестве параметра. В вашем примере вы кодируете строку JSON в JSON, что не имеет смысла.

Если вы замените свою строку этим:

$document =['docs' => [['key'=>'baz','name'=>'bazzel'],['key'=>'bar','name'=>'barry']];

Он будет правильно преобразовывать ваш ассоциативный массив PHP в JSON.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector