この CrunchBase API ページを PHP の文字列として取得しようとしています。ブラウザーでそのページにアクセスすると、完全な応答 (約 230K 文字) が返されます。ただし、スクリプトでページを取得しようとすると、応答がはるかに短くなります (サーバーで 24341 文字、ローカルで 36629 文字、他の長い CrunchBase ページの文字数とまったく同じです)。ページを取得するために、 Drupal を使用していませんが、drupal_http_request()とほぼ同じ関数を使用しています。(私も cURL と file_get_contents() を使用してみましたが、同じ結果が得られました。今考えてみると、過去に Python の CrunchBase で同じことを経験しました。)
何が原因で、どうすれば修正できますか? PHP 5.3.2、アパッチ 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
リクエストで使用したように、ユーザー エージェントの問題ではないと思います。
アップデート
このスレッドによるとAccept-Encoding: gzip, deflate
、リクエストにヘッダーを追加する必要がありました。その結果、リクエストの結果が長くなりますが、それを膨らませる方法を理解する必要があります。gzinflate ()関数は . で失敗しますWarning: Data error
。応答を膨らませる方法について何か考えはありますか?