NOAA NCEI API 未在 Header 中收到令牌

NOAA NCEI API Not Receiving Token in Header

我正在尝试使用 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 header?

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."}