【发布时间】: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