首先要了解下AFNetworking的總體結構:html
CORE:json
AFURLConnectionOperation:一個 NSOperation 實現了NSURLConnection 的代理方法.網絡
HTTP Requests:app
AFHTTPRequestOperation:AFURLConnectionOperation的子類,當request使用的協議爲HTTP和HTTPS時,它壓縮了用於決定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決定。