How do I set a request timeout and cache policy in AFNetworking 2.0?
I'm a bit lazy to categorize or subclass. You can access the manager's request serializer directly:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];manager.requestSerializer.timeoutInterval = INTERNET_TIMEOUT;manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData;
The best is to create a subclass
(you can also the same way add cache policy)
TimeoutAFHTTPRequestSerializer.h
#import "AFURLRequestSerialization.h"@interface TimeoutAFHTTPRequestSerializer : AFHTTPRequestSerializer@property (nonatomic, assign) NSTimeInterval timeout;- (id)initWithTimeout:(NSTimeInterval)timeout;@end
TimeoutAFHTTPRequestSerializer.m
#import "TimeoutAFHTTPRequestSerializer.h"@implementation TimeoutAFHTTPRequestSerializer- (id)initWithTimeout:(NSTimeInterval)timeout { self = [super init]; if (self) { self.timeout = timeout; } return self;}- (NSMutableURLRequest *)requestWithMethod:(NSString *)method URLString:(NSString *)URLString parameters:(NSDictionary *)parameters error:(NSError *__autoreleasing *)error{ NSMutableURLRequest *request = [super requestWithMethod:method URLString:URLString parameters:parameters error:error]; if (self.timeout > 0) { [request setTimeoutInterval:self.timeout]; } return request;}@end
Use
self.requestOperationManager.requestSerializer = [[TimeoutAFHTTPRequestSerializer alloc] initWithTimeout:30];
You can also create a category AFHTTPRequestOperationManager+timeout to add this method without having to subclass AFHTTPRequestOperationManager.