ASIHTTPRequest 資料壓縮

2021-06-20 12:32:42 字數 1624 閱讀 2403

從0.9版本開始,asihttprequest會提示伺服器它可以接收gzip壓縮過的資料。

apache 2.x以上版本已經配備了mod_deflate擴充套件,這使得apache可以透明地壓縮特定種類的資料。要開啟這個特性,你需要在apache的配置檔案中啟用mod_deflate。並將mod_deflate命令新增到你的虛擬主機配置或者.htaccess檔案中。

1

2

3

4

5

6

7

8

9

10

11

12

- (ibaction)graburl:(id)sender

當allowcompressedresponse 設定為yes時,asihttprequest將向request中增加乙個accept-encoding頭,表示我們可以接收gzip壓縮過的資料。如果響應頭中包含乙個content-encoding頭指明資料是壓縮過的,那麼呼叫responsedata或者responsestring將會得到解壓縮後的資料。你也可以通過呼叫rawresponsedata來獲得原始未壓縮的資料。

預設情況下,asihttprequest會等到request完成時才解壓縮返回的資料。若設定request的shouldwaittoinflatecompressedresponses屬性為no,asihttprequest將會對收到的資料進行實時解壓縮。 在某些情況下,這會稍稍提公升速度,因為資料可以在reqeust等待網路資料時進行處理。

如果你需要對響應資料流進行流處理(例如xml和json解析),這個特性會很有用。如果啟用了這個選項,你可以通過實現**函式request:didreceivedata:來將返回的網路資料一點一點餵給解析器。

注意,如果shouldwaittoinflatecompressedresponses 被設定為no,那麼原始(未解壓)的資料會被拋棄。具體情況請查閱asihttprequest.h的**注釋。

1.0.3版本的新特性就是gzip壓縮request資料。使用這個特性,你可以通過設定shouldcompressrequestbody為yes來使你的程式壓縮post/put的內容,預設值為no。

apache的mod_deflate可以自動解壓縮gzip壓縮的請求體(通過合適的設定)。這個方法適用於cgi內容,但不適用於內容過濾器式的模組(例如mod php),這種情況下,你就必須自己解壓縮資料。

asihttprequest 無法檢測乙個伺服器是否能接收壓縮過的請求體。當你確定伺服器可以解壓縮gzip包時,再使用這個特性。

請避免對已經壓縮過的格式(例如jpeg/png/gif/pdf/swf)進行壓縮,你會發現壓縮後的資料比原資料更大。(夢維:因為壓縮包都有頭資訊)

ASIHttpRequest 傳送資料

傳送資料 request addrequestheader referer value 檔案中的資料是需要時才從磁碟載入,所以只要web server能處理,那麼上傳大檔案是沒有問題的。asiformdatarequest request asiformdatarequest requestwith...

ASIHTTPRequest 進度追蹤

每個asihttprequest有兩個delegate用來追蹤進度 uploadprogressdelegate 上載 進度delegate可以是nsprogressindicators mac os x 或者 uiprogressviews iphone asihttprequest會自適應這兩個...

ASIHttpRequest 傳送資料

傳送資料 request addrequestheader referer value 檔案中的資料是需要時才從磁碟載入,所以只要web server能處理,那麼上傳大檔案是沒有問題的。asiformdatarequest request asiformdatarequest requestwith...