У меня есть образец json-объекта, который содержит эти данные. Я пытаюсь сохранить эти данные в переменной и прохожу через curl POST
$json = '{
"mac": "1234567890",
"dns": "8.8.8.8,4.2.2.1",
"acl_mode": 1
}';
$url = 'http://my-site.com/api';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array('json' => $json)));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
dd($result);
Мой результат - 500
{
"status": 500,
"error_code": 1005
}
После тестирования с помощью curl
в терминале мы выяснили, что конечная точка потребляет всю полезную нагрузку POST
без ключа.
Это использовалось для тестирования
curl -X POST -d '{"mac": "1234567890","dns": "8.8.8.8,4.2.2.1","acl_mode": 1}' http://mysite/api
Итак, отправляем полезную нагрузку $json
как есть, без json_encode
и инкапсуляции array
.
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
работал просто отлично.
POST
, я вижу, что выjson_encode
массив строкиjson
это выглядит неправильноcurl_setopt($ch, CURLOPT_POSTFIELDS, array('json' => $json));
чтобы отправить фактическую строку json как полезную нагрузкуPOST
, не кодируйте ее дважды