这是来自美国国家气象局的JSON气象数据的公共URL。
https://forecast.weather.gov/MapClick.php?lat=39.71&lon=-104.76&FcstType=json
如果我输入的URL是浏览器的地址栏(或单击上面的链接),那么我将获得所需的JSON数据。但是我所有使用PHP的尝试(在我的WordPress网站中)都导致身份验证错误。我已经尝试过以下方法的StackOverflow建议:
$json = file_get_contents('url_here');
$obj = json_decode($json);
echo $obj->access_token;
我已经尝试过以下几种方法的StackOverflow建议:
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'url_here');
$result = curl_exec($ch);
curl_close($ch);
$obj = json_decode($result);
echo $obj->access_token;
在所有情况下,我都会收到身份验证错误:
拒绝访问
您无权访问“ http://forecast.weather.gov/MapClick.php吗?” 在此服务器上。参考号#18.d56775c7.1554244115.21225898
错误消息在“?”处停止的事实 网址中的,让我想知道是否需要通过一种方法来传递PHP参数,而不仅仅是将其附加到网址中。
我假设我不需要身份验证信息(用户名,密码),因为NWS数据是公开的。
建议将不胜感激。
您尝试访问的网站似乎正在使用用户代理。
不用担心,我们可以使用cURL轻松做到这一点:
<?php
function curler ($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output);
}
var_dump (
curler("https://forecast.weather.gov/MapClick.php?lat=39.71&lon=-104.76&FcstType=json")
);
它将返回您期望在对象中的数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句