簡體   English   中英

HTTP請求獲得部分響應

[英]HTTP request getting partial response

我試圖將這個CrunchBase API頁面作為PHP中的字符串。 當我在瀏覽器中訪問該頁面時,我得到完整的響應(大約230K字符); 但是,當我嘗試在腳本中獲取頁面時,響應要短得多(服務器上有24341個字符,本地有36629個字符,其他長CrunchBase頁面的字符數完全相同)。 為了獲取頁面,我使用的函數幾乎與drupal_http_request()相同,盡管我沒有使用Drupal。 (我也嘗試過使用cURL和file_get_contents()並得到相同的結果。現在我正在考慮它,我在Python中經歷過與CrunchBase相同的經歷。)

可能導致這種情況的原因以及如何解決? 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

根據這個線程,我需要在請求中添加Accept-Encoding: gzip, deflate標頭。 這確實會導致更長的請求結果,但現在我必須弄清楚如何給它充氣。 gzinflate()函數失敗,出現Warning: Data error 有關如何誇大回應的任何想法?

請參閱PHP文檔中有關gzinflate()的注釋,特別是有關剝離初始字節的注釋。 最后的評論為我做了訣竅:

<?php $dec = gzinflate(substr($enc,10)); ?>

雖然看起來要剝離的字節數取決於原始編碼器。 另一個評論有一個更徹底的解決方案,並參考RFC1952進一步閱讀。

顯然gzdecode()旨在解決這個問題,但尚未發布。

ps - 我刪除了關於返回數據為純文本的評論。 我錯了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM