php curl for datadog api
问题描述:
我正在尝试为datadog api编写一个php curl,但它返回内部错误。这是在bash脚本中工作,但在转换为phpcurl时抛出错误。有人可以帮助我解决这个问题。php curl for datadog api
$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);
答
您用来发送数据的格式不符合documentation并且您的呼叫未能完成。
如果更改调用将你的工作$data
到:
$data = [ 'tags' => ['env:prod'] ];
一致认为,API返回的错误是不是真的有帮助,在Datadog提交的问题来纠正这种行为,并返回正确的错误代码而不是500(它实际上是一个500,你可以通过在执行curl会话后打印curl_getinfo($ch)
来看到它)。
+0
我刚刚通过添加此行解决了问题。 $ data = array('tags'=> array('env:non-production')); –
如果你得到'内部错误500',那么你的代码没有任何关系,除非你做错了什么,否则这是服务器端错误。请参考datadog。 – Ahmad
其显示只是内部错误,而不是内部错误500. @Ahmad –