file_get_content return 某些 url 无效

file_get_content return null for some url

为什么 url 的 json 内容 return 在 php 函数上为 null 获取页面内容?

我使用了这些方法:

但 return 为空。但是当使用浏览器打开页面时 json 内容会显示在浏览器上 ??谁能帮帮我?

    $url = 'https://pardakht.cafebazaar.ir/devapi/v2/api/validate/com.pdgroup.insta/inapp/coin_follow_1/purchases/324234235/?access_token=9IaRpdmQzFppJMabLHbHyzBaQnm8bM';
$result = file_get_content($url);

return null 但在浏览器中显示

{"error_description": "Access token has expired.", "error": "invalid_credentials"}

它 returns 以下内容: 无法打开流:HTTP 请求失败! HTTP/1.1 401 未授权

所以,你必须得到授权。

你可以玩这个代码片段(我无法测试,因为令牌再次过期):

<?php
$access_token = "s9spZax2Xrj5g5bFZMJZShbMrEVjIo"; // use your actual token
$url = "https://pardakht.cafebazaar.ir/devapi/v2/api/validate/com.pdgroup.insta/inapp/coin_follow_1/purchases/324234235/";

// Solution with file_get_contents
// $content = file_get_contents($url . "?access_token=" . $access_token);
// echo $content;

// Solution with CURL
$headers = array(
    "Accept: application/json",
    "Content-Type: application/json",
    "Authorization: Basic " . $access_token
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url); //  . $params - if you need some params
curl_setopt($ch, CURLOPT_POST, false);
// curl_setopt($ch, CURLOPT_USERPWD, $userPwd);

$result = curl_exec($ch);
$ch_error = curl_error($ch);
$info = curl_getinfo($ch);

curl_close($ch);

if ($ch_error) {
    throw new Exception("cURL Error: " . $ch_error);
}

if ($info["http_code"] !== 200) {
    throw new Exception("HTTP/1.1 " . $info["http_code"]);
}

echo $result;