我正在尝试使用此链接使用Cryptsy api:http://pubapi.cryptsy.com/api.php?method=orderdatav2
当我使用浏览器去那里时,我得到了236.2 KB的响应。
当我使用php和curl / fopen / file_get_contents并生成一个GET请求时,我得到1.2M响应并使用相同的数据! (这需要更长的时间才能下载)。
我尝试复制确切的标题,但结果仍然相同。
我怀疑是因为浏览器使用的是gzip而php不是?
还有其他选择吗?我正在用这个追逐我的尾巴。
问题是造成这种情况的原因?
答案 0 :(得分:1)
原因是,您的浏览器会发送以下标题Accept-Encoding: gzip, deflate
。
服务器正在检查此标头是否存在,然后使用gzip
压缩输出。
如果需要,您的浏览器会收到内容并将其解压缩。
CURL
默认情况下,不是。您可以使用此代码更改此内容:
curl_setopt($ch,CURLOPT_ENCODING , "gzip");
另请注意,此选项会关注整个过程。您不必设置自定义Accept-Encoding
标头或解压缩。你不需要处理它。
更多信息:
http://www.php.net/manual/en/book.curl.php
http://en.wikipedia.org/wiki/HTTP_compression
http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/
答案 1 :(得分:0)
实际上是curl_setopt($ ch,CURLOPT_ENCODING,“gzip”);不适合我。
我找到的解决方案写在php - Get compressed contents using cURL
$ch = curl_init("http://games2k.net/");
curl_setopt($ch,CURLOPT_ENCODING , "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
你对gzip说得对:)