为了账号安全,请及时绑定邮箱和手机立即绑定

解码“https” php 数组中的 json 数组

解码“https” php 数组中的 json 数组

PHP
慕少森 2023-12-15 15:50:33
我有以下 https:// url 其中包含 json 数组´https://us.api.blizzard.com/data/wow/mount/6?namespace=static-us&locale=en_US&access_token=USgdNPkRDwpJ1m4zQ2mHokA0O12E0kPTih我想在 php 数组中解码这个 json 数组。为此我用过$jsondata = file_get_contents('https://us.api.blizzard.com/data/wow/mount/6?namespace=static-us&locale=en_US&access_token=USgdNPkRDwpJ1m4zQ2mHokA0O12E0kPTih');$data = json_decode($jsondata, true);我尝试了很多解决方案,因为似乎已知file_get_contents无法读取 https 网址。你能帮我吗,我怎样才能在 php 中解码这个 json 数组,这样我就可以继续使用它,就像它是一个“正常”数组一样。 PHP数组?我也尝试了这个curl解决方案但没有成功:$url="https://us.api.blizzard.com/data/wow/achievement/6?namespace=static-us&locale=en_US&access_token=USgdNPkRDwpJ1m4zQ2mHokA0O12E0kPTih";      function getSslPage($url) {    $ch = curl_init();    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($ch, CURLOPT_HEADER, false);    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_REFERER, $url);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);    $result = curl_exec($ch);    curl_close($ch);    return $result;}
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

原因是 API 提供商正在阻止 CLI 类型的用户代理,这很可能是为了防止机器人和此类事件。


如果您将用户代理设置为使用 cURL 模拟允许的浏览器,则它可以完美运行:


function getSslPage($url, $userAgent) 

{

    $ch = curl_init($url);


    curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

    curl_setopt($ch, CURLOPT_HEADER, false);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_REFERER, $url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);


    $result = curl_exec($ch);

    curl_close($ch);


    return json_decode($result, true);

}


$userAgent = 'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0';

 

$url = "https://us.api.blizzard.com/data/wow/achievement/6?namespace=static-us&locale=en_US&access_token=USgdNPkRDwpJ1m4zQ2mHokA0O12E0kPTih";    



$data = getSslPage($url, $userAgent);


print_r($data);

https://img1.sycdn.imooc.com/657c056e000115da18441100.jpg

查看完整回答
反对 回复 2023-12-15
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信