PHP 中的 HTTP 请求不适用于特定 API
HTTP Request in PHP not working for specific API
我有一个非常简单的脚本:
<?php
$jsonurl = "http://api.wipmania.com/json";
$json = file_get_contents($jsonurl);
echo $json;
?>
它适用于这个 URL,但是当我用这个 URL 调用它时:https://erikberg.com/nba/standings.json
它没有回显数据。这是什么原因?我可能在这里遗漏了一个概念。谢谢
那个特定 URL 的问题是它需要一个不同的用户代理,不同于 PHP 与 file_get_contents()
一起使用的默认值
这是一个使用 CURL 的更好示例。它更健壮,尽管需要更多代码行来配置它并使其成为 运行:
// create curl resource
$ch = curl_init();
// set the URL
curl_setopt($ch, CURLOPT_URL, 'https://erikberg.com/nba/standings.json');
// Return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Fake the User Agent for this particular API endpoint
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
// $output contains the output string.
$output = curl_exec($ch);
// close curl resource to free up system resources.
curl_close($ch);
// You have your JSON response here
echo $output;
我有一个非常简单的脚本:
<?php
$jsonurl = "http://api.wipmania.com/json";
$json = file_get_contents($jsonurl);
echo $json;
?>
它适用于这个 URL,但是当我用这个 URL 调用它时:https://erikberg.com/nba/standings.json
它没有回显数据。这是什么原因?我可能在这里遗漏了一个概念。谢谢
那个特定 URL 的问题是它需要一个不同的用户代理,不同于 PHP 与 file_get_contents()
这是一个使用 CURL 的更好示例。它更健壮,尽管需要更多代码行来配置它并使其成为 运行:
// create curl resource
$ch = curl_init();
// set the URL
curl_setopt($ch, CURLOPT_URL, 'https://erikberg.com/nba/standings.json');
// Return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Fake the User Agent for this particular API endpoint
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
// $output contains the output string.
$output = curl_exec($ch);
// close curl resource to free up system resources.
curl_close($ch);
// You have your JSON response here
echo $output;