次の https:// URL に json 配列が含まれています´
https://us.api.blizzard.com/data/wow/mount/6?namespace=static-us&locale=en_US&access_token=USgdNPkRDwpJ1m4zQ2mHokA0O12E0kPTih
この json 配列を php 配列でデコードしたいと考えています。
そのために私は使用しました
$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 URL を読み取れないことが知られているようなので、多くの解決策を試しました。
助けていただけますか。この JSON 配列を PHP でデコードして、「通常の」配列のように作業を続けるにはどうすればよいですか? php 配列?
このカール ソリューションも試しましたが、成功しませんでした。
$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
私はコンプしていますその URL にはまったく JSON が表示されませんが、その URL が JSON を返すということですか?
– アルベルト
2020 年 9 月 5 日 0:59
また、これも役立つかもしれません: stackoverflow.com/questions/5522636/get-file-content-from-url/…
– アルベルト
2020 年 9 月 5 日 1:02
これはありますか?あなたの質問を無視しますか? file_get_contents() を HTTPS で動作させるにはどうすればよいですか?
– キャットコン
2020 年 9 月 5 日 1:04
[リンク]stackoverflow.com/questions/1975461/… を試してみました。しかし、うまくいきませんでした。 @catcon
– ケルザー
2020 年 9 月 5 日 1:09
@Berto これは JSON を返すと思いますね。
– ケルザー
2020 年 9 月 5 日 1:11
------------------------
その理由は、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);
0