IOS成長之路-ASIHTTPRequest 斷點續傳

1.導入ASIHTTPRequest第三方類庫app

下載地址:ASIHttpRequest類庫         完整代碼下載:下載oop

 

2.在 .h 文件中this

 

[cpp]  view plaincopy
  1. #import <UIKit/UIKit.h>  
  2. #import "ASIHTTPRequest.h"  
  3. #import "ASINetworkQueue.h"  
  4. @interface DownLoadViewController : UIViewController<ASIHTTPRequestDelegate>  
  5. {  
  6.     UIProgressView *_progressView;  
  7. }  
  8.   
  9. @property(nonatomic, retain) UIProgressView *progressView;  
  10. @property(nonatomic, retain) ASINetworkQueue *asiQueue;  
  11. @property(nonatomic, retain) ASIHTTPRequest *asiHttpRequest;  
  12. @end  


3.在 .m 文件中 實現這一過程atom

 

首先開啓隊列:url

 

[cpp]  view plaincopy
  1. _asiQueue=[[ASINetworkQueue alloc]init];//開啓隊列  
  2.     [_asiQueue reset];//nil  
  3.     _asiQueue.showAccurateProgress=YES;//進度  
  4.     [_asiQueue go];  


實現下載:spa

 

 

[cpp]  view plaincopy
  1. NSURL *url = [NSURL URLWithString:@"請求地址"];  
  2.      
  3.    _asiHttpRequest=[ASIHTTPRequest requestWithURL:url];  
  4.    _asiHttpRequest.delegate=self;  
  5.    _asiHttpRequest.downloadProgressDelegate=self;//下載進度的代理,用於斷點續傳  
  6.     
  7.      
  8.     path = NSHomeDirectory();//該方法獲得的是應用程序目錄的路徑  
  9.      
  10.    //目的路徑,設置一個目的路徑用來存儲下載下來的文件  
  11.    NSString *savePath = [path stringByAppendingPathComponent:@"qgw.mp3"];  
  12.    /* 
  13.        臨時路徑: 
  14.            1.設置一個臨時路徑用來存儲下載過程當中的文件 
  15.            2.當下載完後會把這個文件拷貝到目的路徑中,並刪除臨時路徑中的文件 
  16.            3.斷點續傳:當設置斷點續傳的屬性爲YES後,每次執行都會到臨時路徑中尋找要下載的文件是否存在,下載的進度等等。。。而後就會在此基礎上繼續下載,從而實現續傳的效果 
  17.     設置臨時路徑在這個過程當中是至關重要的。。。 
  18.     */  
  19.    NSString *temp = [path stringByAppendingPathComponent:@"temp"];  
  20.      
  21.    /* 
  22.        又在臨時路徑中添加了一個mp3格式的文件,這就至關於設置了一個假的要下載的文件,實際上是不存在的,能夠這麼理解:這裏提供了一個容器,下載的內容填充到了這個容器中。 
  23.        這個容器是必需要設置的,要否則它會不知道要下載到什麼裏面。。。 
  24.      
  25.        會有人說:問什麼不和上面的臨時路徑拚在一塊兒,不是同樣麼:NSString *temp = [path stringByAppendingPathComponent:@"temp/qgw.mp3"]; 
  26.        這是不行的,由於你的臨時路徑必需要保證是正確的、是擁有的,因此在下面你要用NSFileManager來判斷是否存在這麼一個路徑,若是不存在就去建立, 
  27.        當你建立的時候會把qgw.mp3看成是一個文件夾來建立的,因此每次斷點續傳的時候都會進入到qgw.mp3這個文件夾中尋找,固然是找不到的(由於qwg.mp3就是) 
  28.        so,要分開來寫。。。 
  29.      
  30.     */  
  31.    NSString *tempPath = [temp stringByAppendingPathComponent:@"qgw.mp3"];  
  32.      
  33.    //建立文件管理器  
  34.    NSFileManager *fileManager = [NSFileManager defaultManager];  
  35.    //判斷temp文件夾是否存在  
  36.    BOOL fileExists = [fileManager fileExistsAtPath:temp];  
  37.    if (!fileExists)  
  38.    {//若是不存在則建立,由於下載時,不會自動建立文件夾  
  39.          
  40.        [fileManager createDirectoryAtPath:temp  
  41.               withIntermediateDirectories:YES  
  42.                                attributes:nil  
  43.                                     error:nil];  
  44.    }  
  45.      
  46.    [ _asiHttpRequest setDownloadDestinationPath:savePath ];//下載路徑  
  47.    [ _asiHttpRequest setTemporaryFileDownloadPath:tempPath ];//臨時路徑,必定要設置臨時路徑。。  
  48.      
  49.    _asiHttpRequest.allowResumeForFileDownloads = YES;//打開斷點,是否要斷點續傳  
  50.      
  51.    //進度條  
  52.    _progressView.alpha = 1.0f;  
  53.    _progressView.progress=0;//賦值爲0  
  54.      
  55.    [_asiQueue addOperation:_asiHttpRequest];//加入隊列  


獲得下載的進度:.net

 

 

[cpp]  view plaincopy
  1. //代理方法,獲得下載進度  
  2. - (void)setProgress:(float)newProgress{  
  3.     [_progressView setProgress:newProgress];//賦給進度條  
  4. }  


中止下載:代理

 

 

[cpp]  view plaincopy
  1. [_asiHttpRequest clearDelegatesAndCancel];//停掉  
相關文章
相關標籤/搜索