[ 流行的網絡框架 ] AFN & ASI

一、AFN & ASI(早已經中止更新,但如今許多公司也在使用。)git

 

  AFNetWorking地址:https://github.com/AFNetworking/AFNetworking程序員

 

  ASIHTTPRequest地址:https://github.com/paytronix/ASIHTTPRequestgithub

 

二、AFN與ASI對比json

-- AFN
1. 基於 NSURLConnection & NSURLSession 進行的封裝
2. 使用簡單
3. 提供了自動的序列化 & 反序列化支持!api

AFN的優點:
URL直接傳字符串
響應回來獲得的數據能夠半自動反序列化(json能夠自動(afn默認json解析),xml須要手動)
代碼回調在主線程,不須要關心線程間通信
用字典傳遞參數(parameters),不用寫在URL裏(GET),或請求體裏(POST)
根據api文檔,修改GET請求和POST請求,不須要關注如何選擇緩存

 

一、斷點續傳:1. 獲取網絡文件信息、2. 檢查本地文件信息、3. 根據偏移位置下載文件網絡

  NSString *range = [NSString stringWithFormat:@"bytes=%llu-", self.currentLength];多線程

  [request setValue:range forHTTPHeaderField:@"Range"];框架

二、多線程分析異步

三、分段保存(解決內存峯值突增):

  NSFileManager:作文件的複製,刪除,檢查是否存在,建立目錄,刪除目錄,遍歷目錄...相似於在Finder中的操做

  NSFileHandle:針對一個文件作二進制數據的讀寫操做

技巧:能夠利用 MD5 檢測文件下載是否正確 !

  以文件流的方式寫入數據:NSStream也是Socket開發中很是重要的一個環節

技巧:建立一個單例,統一管理全局全部的網絡會話

 


-- ASI
1. 基於 CFNetwork 進行的封裝 Core Foundation,是底層的 C 語言的框架,ASI 的效率是跟好的
2. 使用很是靈活,給程序員提供了各類使用的可能和空間!
* 用代理
* 用塊代碼
* 自定義監聽方法
* 自定義代理-> 開發者能夠定製專屬本身的網絡管理工具!

3. 使用難度大
4. MRC的,須要考慮到 ARC & MRC 混編的問題--下邊有詳解
5. 返回內容只是提供了二進制數據,或者字符串(前提結果確實是字符串!)
ASI的 序列化 和 反序列化 須要程序員本身來!

 

// ASI經過代理的方式處理異步請求,請求成功、失敗都會通知代理

//  代理須要遵照ASIHTTPRequestDelegate協議

PS:經過block回調傳值、發送POST請求、文件上傳&下載、ASI數據緩存、緩存某個請求 等。

  • 實際上ASIHTTPRequest繼承自NSOperation,意味着
  • 能夠將多個ASIHTTPRequest放到NSOperationQueue中,同時管理多個請求
  • 能夠設置請求之間的依賴 
  • ASIFormDataRequest繼承自ASIHTTPRequest

其餘用法:

一、如今是否有網絡請求在處理中

[ASIHTTPRequest isNetworkInUse];

 

二、當正在請求時,是否要在狀態欄顯示聯網狀態(轉圈圈)

[ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:YES];

 

三、當應用後臺運行時,是否仍然繼續處理網絡請求

request.shouldContinueWhenAppEntersBackground = YES;

 

四、設置請求超時後重試的次數

request.numberOfTimesToRetryOnTimeout = 2// 重試2

相關文章
相關標籤/搜索