我正在开发一个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请求