PHP Curl返回XML feed的不一致数据

时间:2011-04-21 20:45:42

标签: php xml curl rss binary-data

我正在研究一个XML阅读器,并且遇到了一些奇怪的问题,并且有几个Feed。使用CURL甚至file_get_contents作为二进制数据加载的源比实际数据更频繁。每当我在浏览器中加载Feed时,它看起来都很好。

具体Feed为http://www.winnipegsun.com/home/rss.xml

我正在使用的代码是

$string = file_get_contents("http://www.winnipegsun.com/home/rss.xml");
var_dump( $string );

2 个答案:

答案 0 :(得分:3)

响应是gzip压缩的:

如果查看HTTP标头: 内容编码:gzip

用PHP解压缩:

gzinflate(substr($string, 10));

http://php.net/manual/en/function.gzinflate.php

希望有所帮助......欢呼

答案 1 :(得分:0)

您应该能够向服务器发送空的Accept-Encoding标头,然后不应发送内容gzip或返回Not Acceptable响应:

$string = file_get_contents(
    "http://www.winnipegsun.com/home/rss.xml",
    FALSE,
    stream_context_create(
        array(
            'http' => array(
                'method'  => "GET",
                'headers' => 'Accept-Encoding:\r\n'
            )
        )
    )
);
var_dump($string);

我不确定网络服务器是否配置正确,因为它无法使用未压缩的Feed响应,即使添加缓存控制标头告诉它不发送缓存的响应。奇怪的是,只是做了

$string = file_get_contents("http://www.winnipegsun.com/home/rss.xml?".time());

开箱即用。您也可以发送POST请求。