RSS-Feed 返回一个空字符串。

5
我有一个新闻门户网站,用于显示RSS Feed的项目。大约阅读了50个来源,运行得非常好。
但是只有一个源始终返回空字符串。W3C的RSS验证器可以读取该RSS Feed。甚至我的Vienna程序也能接收数据。
我该怎么办?
以下是我简单的代码:
$link = 'http://blog.bosch-si.com/feed/';

$response = file_get_contents($link);

if($response !== false) {
    var_dump($response);
} else {
    echo 'Error ';
}

1
请查看如何调试file_get_contents() - Naruto
你的日志里有没有任何错误?确保错误日志记录已启用。 - Gordon
2
你必须使用User-Agent,因为/feed/脚本会检查它。 - jmp
2个回答

4
该提供RSS订阅的服务器需要设置用户代理。你似乎没有在php.ini中设置用户代理,也没有在file_get_contents的调用中设置它。
你可以通过流上下文为此特定请求设置用户代理:
echo file_get_contents(
    'http://blog.bosch-si.com/feed/',
    FALSE,
    stream_context_create(
        array(
            'http' => array(
                'user_agent' => 'php'            
            )
        )
    )
);

或者对于任何http请求全局设置:

ini_set('user_agent', 'php');
echo file_get_contents($link);

无论哪个选项都会给您想要的结果。


更有效的答案 - Chetan Ameta

2

博客http://blog.bosch-si.com/feed/需要一些头部信息才能从网站获取内容,最好使用curl进行操作。

以下是解决方案:

<?php
$link = 'http://blog.bosch-si.com/feed/';
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: blog.bosch-si.com', 'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'));
$result = curl_exec($ch);
if( ! $result)
{
    echo curl_error($ch);

}
curl_close($ch);
echo $result;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接