gpt4 book ai didi

php - 如何使用 PHP 从 URL 获取 JSON 数据?我遇到身份验证失败

转载 作者:搜寻专家 更新时间:2023-10-31 21:19:47 24 4
gpt4 key购买 nike

这是来自美国国家气象局的 JSON 天气数据的公共(public) 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;

在所有情况下,我都会收到身份验证错误:

Access Denied
You don't have permission to access "http://forecast.weather.gov/MapClick.php?" on this server.

Reference #18.d56775c7.1554244115.21225898

错误消息在“?”处停止的事实在 URL 中让我想知道我是否需要通过一种方法传递 PHP 参数,而不是简单地将它们附加到 URL。

我假设我不需要身份验证信息(用户名、密码),因为 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")
);

这将返回您期望在对象中的数据。

关于php - 如何使用 PHP 从 URL 获取 JSON 数据?我遇到身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55484537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com