PHP Curl для API данных

я пытаюсь написать php curl для API datadog, но он возвращает внутреннюю ошибку. это работало в скрипте bash, но выдавало ошибку при конвертации в phpcurl. Может ли кто-нибудь помочь мне в этом.

$data = [
'tags' =>  '[env:prod]'

];
$headers = [
'Accept: application/json',
'Content-Type: application/json'
];
$tagUrl="https://app.datadoghq.com/api/v1/tags/hosts/".$host."?api_key=".$api_key."&application_key=".$app_key;

$http_method='POST';
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $tagUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
$out=curl_exec($ch);

1

Решение

Формат, который вы используете для отправки данных, не соответствует документация и ваш звонок не может быть завершен.

Звонок будет работать, если вы измените $data чтобы:

$data = [ 'tags' => ['env:prod'] ];

Согласившись с тем, что ошибка, возвращаемая API, не очень полезна, подала проблему в Datadog, чтобы исправить это поведение и вернуть правильный код ошибки, а не 500 (на самом деле это 500, и вы можете увидеть это, напечатав curl_getinfo($ch) после того, как вы выполнили сеанс скручивания).

3

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

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