【问题标题】:php curl for datadog api用于数据狗 api 的 php curl
【发布时间】:2017-03-15 16:16:02
【问题描述】:

我正在尝试为 datadog api 编写一个 php curl,但它返回内部错误。这在 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);

【问题讨论】:

  • 如果您收到internal error 500,则与您的代码无关,这是服务器端错误,除非您做错了什么。请参考datadog。
  • 它只显示内部错误,而不是内部错误 500。@Ahmad

标签: php curl php-curl datadog


【解决方案1】:

您用于发送数据的格式不符合documentation 并且您的呼叫无法完成。

如果您将$data 更改为:

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

同意 API 返回的错误并没有真正的帮助,在 Datadog 中提出问题以纠正该行为并返回正确的错误代码而不是 500(它实际上是 500,您可以通过打印 curl_getinfo($ch) 来查看它执行 curl 会话后)。

【讨论】:

  • 我刚刚通过添加这一行解决了这个问题。 $data = array('tags'=> array('env:non-production'));
猜你喜欢
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 2011-11-27
相关资源
最近更新 更多