Как я могу проверить, что я делаю правильный POST через cURL в PHP?

2

У меня есть образец 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
}

  • Является ли способ, которым я устанавливаю свой локон?
  • 0
    что ожидает конечная точка с точки зрения полезной нагрузки POST , я вижу, что вы json_encode массив строки json это выглядит неправильно
  • 3
    попробуйте этот curl_setopt($ch, CURLOPT_POSTFIELDS, array('json' => $json)); чтобы отправить фактическую строку json как полезную нагрузку POST , не кодируйте ее дважды
Показать ещё 11 комментариев
Теги:
curl

1 ответ

1
Лучший ответ

После тестирования с помощью 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);

работал просто отлично.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню