我尝试使用NOAA's weather API检索网站的当前本地天气信息。
根据他们的documentation,请求应采用以下格式:
curl -H "token:<token>" "url"
当我在命令行上执行上述操作时,替换<token>
和url
,我得到了200个预期响应。
我正在使用PHP的cURL库,因此我构建了我的请求(用我收到的令牌替换<token>
):
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'https://www.ncdc.noaa.gov/cdo-web/api/v2/locations/',
CURLOPT_HTTPHEADER => 'token:<token>'
));
$response = curl_exec($curl);
curl_close($curl);
但是,当我执行此请求时,出现以下消息时出现400错误:
Token parameter is required.
我不明白PHP cURL请求与命令行请求有何不同。如何更改我的PHP cURL请求以正确发送token
标头?
答案 0 :(得分:0)
CURLOPT_HTTPHEADER
值必须是数组,而不是字符串:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'https://www.ncdc.noaa.gov/cdo-web/api/v2/locations/',
CURLOPT_HTTPHEADER => ['token: <token>'] // Use array here
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
没有任何有效令牌,输出为:
{"status" : "400", "message" : "The token parameter provided is not valid."}