PHP Curl为XML提要返回不一致的数据



我正在开发一个XML阅读器,遇到了一些提要的奇怪问题。使用CURL甚至file_get_contents,提要更经常以二进制数据加载,而不是真实数据。当我在浏览器中加载提要时,它看起来很好。

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

我使用的代码是
$string = file_get_contents("http://www.winnipegsun.com/home/rss.xml");
var_dump( $string );

响应被压缩:

如果你看一下HTTP报头:内容编码:gzip

用PHP解压:

gzinflate(substr($string, 10));
http://php.net/manual/en/function.gzinflate.php

希望能帮到你…欢呼声

你应该能够发送一个空的Accept-Encoding头到服务器,然后它不应该发送内容压缩或返回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:rn'
            )
        )
    )
);
var_dump($string);

我不确定web服务器是否配置正确,因为它不会响应未压缩的feed,即使添加缓存控制头告诉它不发送缓存响应。奇怪的是,只要做

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

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

相关内容

  • 没有找到相关文章

最新更新