背景
在试图尝试通过Zabbix接入DeepSeek API的时候,由于使用了HTTP的方式,所以需要使用Zabbix 自带的HttpRequest库进行请求,产生了下面的问题
问题
curl
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-r1",
"messages": [
{
"role": "user",
"content": "9.9和9.11谁大"
}
]
}'
这是阿里云的DeepSeek API的请求示例,可以看到必须加入两个header,即必须把API_KEY放进去,所以我写了如下的代码
request.addHeader('Content-Type','application/json');
request.addHeader('Authorization','Bearer xxx');
但是收获了如下的error
250751:20250224:105524.139 [ DeepSeek Webhook ] Received response with status code 401
{"error":{"message":"You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY). ","type":"invalid_request_error","param":null,"code":null},"request_id":"327c1ff0-1ec2-9a60-b95b-9516ab2d2745"}
显示没有找到对应的key
解决方案
从中文文档中,很难发现问题出在了哪里
但是直到我去查他的代码示例
req.addHeader('Content-Type: application/json');
作为对比
request.addHeader('Content-Type','application/json');
有没有发现哪里不太一样?根本就不是key-value的模式!
然后我就去转成了英文的文档,英文文档很明显的写了只需要输入value,所以根本就不是key-value的格式
于是修改代码,请求成功!
总结
不说别的,少看中文文档,能帮自己减少很多坑!