iOS開發網路篇之:ASIHTTPRequest雜記

來源:互聯網
上載者:User

設定user agent

代碼如下:

[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:

[request setUserAgent:@"MyApp 1.0"];

當程式進入後台運行時,繼續執行request(iOS)
// iOS 4以上,支援後台下載,不過只支援1分鐘,在1分鐘之後,iOS就會把該程式幹掉

[request setShouldContinueWhenAppEntersBackground:YES];

監視網路活動

//記錄過去5秒的平均流量位元組/秒NSLog(@"%llu",[ASIHTTPRequest averageBandwidthUsedPerSecond]); if ([ASIHTTPRequest isNetworkInUse]) {// ASIHTTPRequest 進程中有requests正在使用網路}

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

[ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:NO];

逾時自動重試
設定逾時自動重試最大次數為2:

[request setNumberOfTimesToRetryOnTimeout:2];

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

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

很多伺服器不會在回應標頭中規定持久串連的持久時間,它們可能會在任何一個request完成時候關閉串連。如果一個伺服器沒有規定持久串連的持久時間,ASIHTTPRequest將會在一個request完成後,保持串連60秒。對於你的伺服器設定來時,60可能很長,也可能很短。
如果這個逾時時間太長,那麼可能一個request使用這個串連時,伺服器可能已經關閉了這個串連。當ASIHTTPRequest遇到串連已關閉錯誤,它就會在一個新的串連上重試這個request。
如果這個逾時時間太短,而伺服器卻更想讓這個串連保持更長時間,但是ASIHTTPRequest又開啟了不必要的新串連,那麼這將導致效率降低。

// 設定持久串連的逾時時間為120秒[request setPersistentConnectionTimeoutSeconds:120]; // 徹底禁用持久串連[request setShouldAttemptPersistentConnection:NO];強制使用HTTP 1.0[request setUseHTTPVersionOne:YES];

禁用安全性憑證校正
如果你有一個自簽名的認證,你可能想禁用認證校正來做測試。這裡我建議你從一個可信的CA購買認證,並為生產(production)期的app(夢維:app還有測試期等等階段不是?)啟用認證校正。

[request setValidatesSecureCertificate:NO];

以流的方式讀取本地檔案,然後上傳到伺服器

ASIFormDataRequests的設定

[request setFile:@"/Users/ben/Desktop/bigfile.txt" forKey:@"file"];//使用setFile:forKey:時,ASIFormDataRequest會使用流的方式上傳檔案到伺服器

普通ASIHTTPRequest的設定:

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/"];ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];[request setShouldStreamPostDataFromDisk:YES];[request appendPostData:data];[request appendPostDataFromFile:@"/Users/XXX/Desktop/bigfile.txt"];[request startSynchronous];
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.