我正在研究一个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 );
答案 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请求。