я пытаюсь написать 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);
Формат, который вы используете для отправки данных, не соответствует документация и ваш звонок не может быть завершен.
Звонок будет работать, если вы измените $data
чтобы:
$data = [ 'tags' => ['env:prod'] ];
Согласившись с тем, что ошибка, возвращаемая API, не очень полезна, подала проблему в Datadog, чтобы исправить это поведение и вернуть правильный код ошибки, а не 500 (на самом деле это 500, и вы можете увидеть это, напечатав curl_getinfo($ch)
после того, как вы выполнили сеанс скручивания).
Других решений пока нет …