ASIHTTPRequest-其他特

設置user agent

這樣設置用戶代理:

1 [ASIHTTPRequest setDefaultUserAgentString:@"MyApp 1.0"]

如果不設置user agent,ASIHTTPRequest會爲你創建一個。例如(Mac OS程序):

My Application 1.0 (Macintosh; Mac OS X 10.5.7; en_GB)

你也可以爲每個request設置user agent:

1 [request setUserAgent:@"MyApp 1.0"]

當程序進入後臺運行時,繼續執行request(iOS)

1
2
// iOS 4以上
[request setShouldContinueWhenAppEntersBackground:YES];

監視網絡活動

1
2
3
4
5
6
//記錄過去5秒的平均流量字節/秒
NSLog(@"%llu",[ASIHTTPRequest averageBandwidthUsedPerSecond]);
 
if ([ASIHTTPRequest isNetworkInUse]) {
    // ASIHTTPRequest 進程中有requests正在使用網絡
}

禁用自動更新網絡連接標示符狀態(iOS)

默認情況下,ASIHTTPRequest在request使用網絡連接時,會自動顯示網絡連接標示符(iOS狀態條中)。如果你想自己控制標示符,你可以禁用這個特性:

1 [ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:NO];

超時自動重試

設置超時自動重試最大次數爲2:

1 [request setNumberOfTimesToRetryOnTimeout:2];

設置持久連接

默認情況下,ASIHTTPRequest將會嘗試保持對一個服務器的連接以便往後的連接到該服務器的request可以重用這個連接(這個特性可 以顯著地提高速度,尤其是當你會要進行很多小數據量request時)。當連接到HTTP 1.1服務器或者服務器發送keep-alive頭時,持久連接會自動被使用。當服務器顯式地發送”Connection:close”頭時,持久連接就 不會被使用。另外,默認情況下,ASIHTTPRequest不會對包含請求體(例如POST/PUT)的request使用持久連接(從1.8.1版本 開始)。通過設置request,你可以強制讓此類request使用持久連接:

1
2
[request setRequestMethod:@"PUT"];
[request setShouldAttemptPersistentConnection:YES];

很多服務器不會在響應頭中規定持久連接的持久時間,它們可能會在任何一個request完成時候關閉連接。如果一個服務器沒有規定持久連接的持久時 間,ASIHTTPRequest將會在一個request完成後,保持連接60秒。對於你的服務器設置來時,60可能很長,也可能很短。

如果這個超時時間太長,那麼可能一個request使用這個連接時,服務器可能已經關閉了這個連接。當ASIHTTPRequest遇到連接已關閉錯誤,它就會在一個新的連接上重試這個request。

如果這個超時時間太短,而服務器卻更想讓這個連接保持更長時間,但是ASIHTTPRequest又開啓了不必要的新連接,那麼這將導致效率降低。

1
2
3
4
5
// 設置持久連接的超時時間爲120秒
[request setPersistentConnectionTimeoutSeconds:120];
 
// 徹底禁用持久連接
[request setShouldAttemptPersistentConnection:NO];

強制使用HTTP 1.0

1 [request setUseHTTPVersionOne:YES];

禁用安全證書校驗

如果你有一個自簽名的證書,你可能想禁用證書校驗來做測試。這裏我建議你從一個可信的CA購買證書,併爲生產(production)期的app(夢維:app還有測試期等等階段不是?)啓用證書校驗。

1 [request setValidatesSecureCertificate:NO];
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章