簡介
AFNetworking是目前iOS最流行的網絡請求庫,其內部實現封裝了NSURLSession的網絡請求。
AFNetworking的5個模塊
NSURLSession
- AFURLSessionManager:
AFURLSessionManager可以依據NSURLSessionConfiguration對象創建和管理NSURLSession對象;依據NSURLRequest對象創建NSURLSessionTask。方法聲明如下:
- (instancetype)initWithSessionConfiguration:(nullable NSURLSessionConfiguration *)configuration;
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
completionHandler:(nullable void (^)(NSURLResponse *response, id _Nullable responseObject, NSError * _Nullable error))completionHandler;
AFURLSessionManager實現NSURLSessionDelegate, NSURLSessionTaskDelegate等協議,可以監聽并處理NSURLSession和NSURLSessionTask的狀態變化。
AFURLSessionManager可以設置用來處理NSURLSession和NSURLSessionTask的狀態變化的block。方法如下:
- (void)setSessionDidBecomeInvalidBlock:(nullable void (^)(NSURLSession *session, NSError *error))block;
- (void)setTaskDidCompleteBlock:(nullable void (^)(NSURLSession *session, NSURLSessionTask *task, NSError * _Nullable error))block;
- AFHTTPSessionManager:
AFHTTPSessionManager是AFURLSessionManager的子類,主要是提供了一些簡便方法創建HTTP請求。方法如下:
- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString
parameters:(nullable id)parameters
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure DEPRECATED_ATTRIBUTE;
Reachabilty
AFNetworkReachabilityManager提供了接口用來檢測設備網絡狀態。
Security
和HTPPS相關。
Serialization
- AFHTTPRequestSerializer:
AFHTTPRequestSerializer可以根據http請求方法,請求url,請求參數創建NSMutableURLRequest,并且可以設置請求報文的請求頭部內容。方法如下:
- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
URLString:(NSString *)URLString
parameters:(nullable id)parameters
error:(NSError * _Nullable __autoreleasing *)error;
AFJSONRequestSerializer和AFPropertyListRequestSerializer:
AFJSONRequestSerializer繼承自AFHTTPRequestSerializer,功能是將請求參數編碼成json數據。類似,AFPropertyListRequestSerializer的功能是將請求參數編碼成propertyList。AFHTTPResponseSerializer:
AFHTTPResponseSerializer提供了接口來驗證響應報文的正確性。方法如下:
- (BOOL)validateResponse:(nullable NSHTTPURLResponse *)response
data:(nullable NSData *)data
error:(NSError * _Nullable __autoreleasing *)error;
- AFJSONResponseSerializer, AFXMLParserResponseSerializer, AFPropertyListResponseSerializer, AFImageResponseSerializer
這些類都繼承自AFHTTPResponseSerializer,除了驗證響應報文的正確性外,主要是將響應報文的響應主體解析成相應的數據格式。