【问题标题】:NCDC Web Services weather data with REST and PHP带有 REST 和 PHP 的 NCDC Web 服务天气数据
【发布时间】:2020-05-24 17:09:08
【问题描述】:

我正在尝试使用 PHP 从National Climatic Data Center's online web services 读取降水数据,但我不知道如何读取它。文档说它是一个 RESTful Web 服务。我得到了一个令牌,我已经尝试了我能想到的一切,并在网上搜索了我能找到的任何建议,但我无法让它返回任何东西。我的第一步是使用 Web 服务请求数据集列表,因此我知道在请求实际数据时要使用什么数据集。这是我用来尝试请求数据集的代码。谁能引导我朝着正确的方向阅读结果。

$url = "https://www.ncdc.noaa.gov/cdo-web/api/v2/datasets?stationid=COOP:010957";
$curl_post_data = array("token" => $token);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($curl, CURLOPT_HTTPHEADER,array('Content-type: application/json','Content-length: '.strlen($curl_post_data)));
$curl_response = curl_exec($curl);
curl_close($curl);
$json_a = json_decode($curl_response,TRUE);
var_dump($json_a); // just to see the structure.
echo "\n";
foreach($json_a as $row){
   echo $row->status;
   echo "\n";
}   

【问题讨论】:

  • 您应该查看var_dump($curl_response)。就我而言,它给了我来自服务器的 500 错误。您发送到服务器的请求可能有问题。我假设在我的情况下这只是因为令牌,但这可能是你的问题。另请检查json_last_error_msg()。不要只是假设 JSON 解析器成功了。服务器发回的 json 也可能存在问题。除此之外,我没有看到您在这里遇到 PHP 问题。无论如何,我们无法在您的代码中修复任何问题。您需要参考 API 的文档和支持。
  • 或者可以尝试使用docs.guzzlephp.org/en/stable/quickstart.html 更简单且基于 OOP,这将有助于调试

标签: php rest curl weather noaa


【解决方案1】:

事实证明,上面链接描述的 API V2 已被弃用,它们恢复为 API V1。太糟糕了,他们没有费心从网络上删除 V2 文档。 V1 不需要令牌,因此数据检索非常容易(在您找出正确的站 ID 和数据集之后)。这是我的新代码:

$string = file_get_contents("https://www.ncei.noaa.gov/access/services/data/v1?dataset=local-climatological-data&stations=72509014739&units=standard&startDate=2020-02-01&endDate=2020-02-12&format=json");
$json_a = json_decode($string, TRUE);
foreach($json_a as $item){
    echo $item['DATE'] . " " . $item['HourlyDryBulbTemperature'] . "F, " . $item['HourlyPrecipitation'] . "in</br>";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2013-03-05
    • 2016-01-18
    • 1970-01-01
    相关资源
    最近更新 更多