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) после того, как вы выполнили сеанс скручивания).

Другие вопросы по тегам