我正在尝试从以下URL获取文本。
http://stp.stheadline.com/data/indexNewsMarquee.json
我试过几种方法,但都没有奏效。我现在真的很绝望,请帮助我,并提前感谢。
注意,我已经在in i.php中启用了allow_url_fopen。
我正在使用xampp v3.3.2和php v5.6.23
以下是我尝试过的代码(但失败了)
卷曲
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
结果:空字符串
文件获取内容
echo file_get_contents($url, true);
结果:无法打开流:http请求失败!
读取文件
echo readfile($url)
结果:输出地址本身
最佳答案
嗨,您必须在curl请求中传递头,以便服务器可以将其视为浏览器请求。
$url="http://stp.stheadline.com/data/indexNewsMarquee.json";
$requestHeaders = array(
"Accept:application/json, text/javascript, */*; q=0.01",
"Accept-Language:en-US,en;q=0.8",
"Connection:keep-alive",
"Host:stp.stheadline.com",
"Origin:http://stp.stheadline.com",
"Referer:http://stp.stheadline.com/data/indexNewsMarquee.json",
"User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $requestHeaders);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;