我试图在PHP中将this CrunchBase API page作为字符串获取。当我在浏览器中访问该页面时,我会得到完整的响应(大约230K字符);然而,当我尝试在脚本中获取页面时,响应时间要短得多(服务器上24341个字符,本地36629个字符,其他长CrunchBase页面的字符数完全相同)。要获得页面,我使用的功能几乎与drupal_http_request()完全相同,但我没有使用Drupal。 (我也尝试过使用cURL和file_get_contents(),并得到了相同的结果。现在我正在考虑它,我过去曾经在Python中使用过CrunchBase。)HTTP请求获取部分响应
什么可能导致这种情况,我该如何解决它? PHP 5.3.2,Apache 2.2.14,Ubuntu 10.04。以下是对响应的其他详细信息:
[protocol] => HTTP/1.1
[headers] => Array
(
[content-type] => text/javascript; charset=utf-8
[connection] => close
[status] => 200 OK
[x-powered-by] =>
[etag] => "d809fc56a529054e613cd13e48d75931"
[x-runtime] => 0.00453
[content-length] => 230310
[cache-control] => private, max-age=0, must-revalidate
[server] => nginx/1.0.10 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
)
我不认为这是我在请求中使用User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6
用户代理的问题。
UPDATE
根据this thread我需要的Accept-Encoding: gzip, deflate
头添加到请求。这确实会导致更长的请求结果,但现在我必须弄清楚如何夸大它。 gzinflate()函数失败,出现Warning: Data error
。有关如何夸大回应的想法?
这似乎工作。谢谢!最无法证明的魔力。 – IceCreamYou