iOS AFN設置超時

首先要了解下AFNetworking的總體結構:html

CORE:json

AFURLConnectionOperation:一個 NSOperation 實現了NSURLConnection 的代理方法.網絡

HTTP Requests:app

AFHTTPRequestOperation:AFURLConnectionOperation的子類,request使用的協議爲HTTPHTTPS,它壓縮了用於決定request是否成功的狀態碼和內容類型.異步

AFJSONRequestOperation:AFHTTPRequestOperation的一個子類,用於下載和處理jason response數據.函數

AFXMLRequestOperation:AFHTTPRequestOperation的一個子類,用於下載和處理xml response數據.url

AFPropertyListRequestOperation:AFHTTPRequestOperation的一個子類,用於下載和處理property list response數據.spa

HTTP CLIENT:代理

AFHTTPClient:捕獲一個基於http協議的網絡應用程序的公共交流模式.orm

IMAGES

AFImageRequestOperation:一個AFHTTPRequestOperation的子類,用於下載和處理圖片.

UIImageView+AFNetworking:添加一些方法到UIImageView,爲了從一個URL中異步加載遠程圖片。

//////////////////

瞭解以上信息後纔來設置超時時間;

 1.隊列方式的超時時間設置

AFNetworking的默認超時時間爲60s。咱們能夠經過在AFURLConnectionOperation.m文件

- (id)initWithRequest:(NSURLRequest *)urlRequest {

.......

NSLog(@"timeoutInterval: %f",[urlRequest timeoutInterval]);  默認就是60s。

.....

}

如何修改超時時間呢?

json方式爲例:

 //建立請求並設置超時時間

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[baseUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];  

AFJSONRequestOperation *jsonOper = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request,NSHTTPURLResponse *response, id JSON)  {

}

     failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {

}];

 2。圖片下載方式的超時設置

在SDWebImageDownloader.m文件中的 downloadImageWithURL。

具體爲:- (id<SDWebImageOperation>)downloadImageWithURL:(NSURL *)url options:(SDWebImageDownloaderOptions)options progress:(void (^)(NSUInteger,long long))progressBlock completed:(void (^)(UIImage *,NSData *, NSError *, BOOL))completedBlock函數。

主要是:

- (id)initWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval;中的timeoutInterval決定。

相關文章
相關標籤/搜索