- 本文的寫作目的是為學習記錄,同時分享給大家,希望大神能夠對文中錯誤的理解進行指正。
- 如果文章內容涉及到其他已經發表了,但文章中又未提及轉載事項,請及時與本人聯系。
- 本文為個人理解,如果部分知識點與真實情況有出入,請忽略本文。
1 前言
1.1 概述
雖然蘋果的原生SDK中已經有很強大的網絡請求API,例如NSURLSession、NSURLRequest等。但為了滿足不同的網絡需求,也同時為了代碼簡潔和易用性,誕生了許多第三方封裝的網絡框架。其中主流的包括ASIHTTPRequest、AFNetworking、MKNetworkKit等。
- ASIHTTPRequest比較老,且作者已經停止更新了。
- AFNetworking比ASIHTTPRequest簡單,功能齊全,目前持續更新中(詳見GitHub)。
- MKNetworkKit最輕量,而且功能也比較齊全,但是也已經停止更新了。
把框架添加到項目后,只要做簡單的封裝,就能實現HTTP請求、Json/XML解析、Reachability網絡連接狀態監視、多線程網絡請求、數據傳輸的安全策略等各種網絡請求功能。
1.2 版本
AFNetworking-2.5.4
1.3 漢化文件
AFURLSessionManager.h
2 漢化代碼
#import <Foundation/Foundation.h>
#import "AFURLResponseSerialization.h"
#import "AFURLRequestSerialization.h"
#import "AFSecurityPolicy.h"
#import "AFNetworkReachabilityManager.h"
#ifndef NS_DESIGNATED_INITIALIZER
#if __has_attribute(objc_designated_initializer)
#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
#else
#define NS_DESIGNATED_INITIALIZER
#endif
#endif
/**
“AFURLSessionManager”類基于一個指定的“NSURLSessionConfiguration”對象,創建并管理一個“NSURLSession”對象。
并且,“AFURLSessionManager”類符合“<NSURLSessionTaskDelegate>”、 “<NSURLSessionDataDelegate>”、 “<NSURLSessionDownloadDelegate>”和“<NSURLSessionDelegate>”委托。
## 子類說明
“AFHTTPSessionManager”類,增加指定HTTP請求功能。
如果你想為“AFURLSessionManager”類指定額外的HTTP請求,可以用“AFHTTPSessionManager”類來代替。
## “NSURLSession”和“NSURLSessionTask”的委托方法
“AFURLSessionManager”支持以下委托方法:
### “NSURLSessionDelegate”
- “URLSession:didBecomeInvalidWithError:”
- “URLSession:didReceiveChallenge:completionHandler:”
- “URLSessionDidFinishEventsForBackgroundURLSession:”
### “NSURLSessionTaskDelegate”
- “URLSession:willPerformHTTPRedirection:newRequest:completionHandler:”
- “URLSession:task:didReceiveChallenge:completionHandler:”
- “URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:”
- “URLSession:task:didCompleteWithError:”
### “NSURLSessionDataDelegate”
- “URLSession:dataTask:didReceiveResponse:completionHandler:”
- “URLSession:dataTask:didBecomeDownloadTask:”
- “URLSession:dataTask:didReceiveData:”
- “URLSession:dataTask:willCacheResponse:completionHandler:”
### “NSURLSessionDownloadDelegate”
- “URLSession:downloadTask:didFinishDownloadingToURL:”
- “URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:”
- “URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:”
上面這些方法中的任何一個方法被重寫,那么必須先用“super”關鍵字調用父類的方法。
## 網絡連接狀況監控
通過“reachabilityManager”屬性,監視網絡連接的狀態和變化。
應用程序可以選擇監視網絡連接狀態,以防止或暫停任何外傳請求。
詳細內容,請參考“AFNetworkReachabilityManager”類
## NSCoding說明
- 編譯管理器不包括Block屬性。當使用“-initWithCoder:”方法或者“NSKeyedUnarchiver”類時,確定已經設置了委托回調的Block。
## NSCopying說明
- “-copy”和“-copyWithZone:”方法返回一個新的管理器類,其中包含一個根據原來“NSURLSession”對象的配置所創建的、新的“NSURLSession”對象。
- 操作拷貝對象時,不能包括任何只有強引用時才包含的委托回調的Block。不然當拷貝時,會存在一個指向原來會話管理器的隱性指針。
@warning 后臺會話管理器在使用期間,必須被擁有。這可以通過創建一個應用類或單例實現。
*/
#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090)
@interface AFURLSessionManager : NSObject <NSURLSessionDelegate, NSURLSessionTaskDelegate, NSURLSessionDataDelegate, NSURLSessionDownloadDelegate, NSSecureCoding, NSCopying>
/**
會話管理器
*/
@property (readonly, nonatomic, strong) NSURLSession *session;
/**
當委托回調時,可能調用的操作隊列
*/
@property (readonly, nonatomic, strong) NSOperationQueue *operationQueue;
/**
當數據傳輸任務用“GET”、“POST”等方式時,在“dataTaskWithRequest:success:failure:”方法里創建的一個從服務器發回的響應。
默認情況下,此屬性設置為“AFJSONResponseSerializer”的一個實例。
@warning “responseSerializer”必須不為空.
*/
@property (nonatomic, strong) id <AFURLResponseSerialization> responseSerializer;
///-------------------------------
/// @name 管理器的安全策略
///-------------------------------
/**
安全策略,用于在請求操作中,對服務器連接是否安全的信任值評估。
在沒有指定的情況下,“AFURLSessionManager”默認使用“defaultPolicy”。
*/
@property (nonatomic, strong) AFSecurityPolicy *securityPolicy;
///--------------------------------------
/// @name 監視網絡連接狀況
///--------------------------------------
/**
網絡連接狀況管理器,“AFURLSessionManager”默認使用“sharedManager”。
*/
@property (readwrite, nonatomic, strong) AFNetworkReachabilityManager *reachabilityManager;
///----------------------------
/// @name 獲取網絡會話的任務
///----------------------------
/**
在當前會話中,運行的數據、上傳和下載的會話任務。
*/
@property (readonly, nonatomic, strong) NSArray *tasks;
/**
在當前會話中,運行的所有數據(Data)會話任務
*/
@property (readonly, nonatomic, strong) NSArray *dataTasks;
/**
在當前會話中,運行的所有上傳(Upload)會話任務
*/
@property (readonly, nonatomic, strong) NSArray *uploadTasks;
/**
在當前會話中,運行的所有下載(Download)會話任務
*/
@property (readonly, nonatomic, strong) NSArray *downloadTasks;
///-------------------------------
/// @name 管理回調的隊列
///-------------------------------
/**
“completionBlock”的線程隊列。
如果為空,則在主線程中執行。
*/
#if OS_OBJECT_HAVE_OBJC_SUPPORT
@property (nonatomic, strong) dispatch_queue_t completionQueue;
#else
@property (nonatomic, assign) dispatch_queue_t completionQueue;
#endif
/**
“completionBlock”的線程群。
如果為空,則在一個私有線程群中執行。
*/
#if OS_OBJECT_HAVE_OBJC_SUPPORT
@property (nonatomic, strong) dispatch_group_t completionGroup;
#else
@property (nonatomic, assign) dispatch_group_t completionGroup;
#endif
///---------------------------------
/// @name 工作系統錯誤
///---------------------------------
/**
當首次調用返回nil時,是否重新在后臺會話中創建上傳任務。默認為“NO”。
@bug 在iOS 7.0版本存在一個Bug:后臺會話中的上傳會話任務有時為“nil”。作為一個解決方法,如果這個屬性是“YES”,AFNetworking將遵循蘋果的建議再次嘗試創建任務。
@see https://github.com/AFNetworking/AFNetworking/issues/1675
*/
@property (nonatomic, assign) BOOL attemptsToRecreateUploadTasksForBackgroundSessions;
///---------------------
/// @name 初始化
///---------------------
/**
根據指定的configuration,創建并返回一個會話管理器。這是指定初始化方法。
@param configuration 用于創建會話管理器的配置信息.
@return 一個新建的會話管理器.
*/
- (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
/**
當會話管理器無效時,可選的取消等待執行的會話任務。
@param cancelPendingTasks 是否取消等待執行的會話任務.
*/
- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks;
///-------------------------
/// @name 運行數據的會話任務
///-------------------------
/**
根據指定的request,創建一個“NSURLSessionDataTask”。
@param request HTTP請求的request。
@param completionHandler 當會話任務結束時,執行該Block對象。該Block沒有返回值,但有三個參數:服務器響應對象;解析器生成的響應對象;執行錯誤對象(如果不存在錯誤,則為nil)。
*/
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;
///---------------------------
/// @name 運行上傳的會話任務
///---------------------------
/**
根據一個本地文件創建request對象,再用該request對象創建的一個“NSURLSessionUploadTask”對象
@param request HTTP請求的request。
@param fileURL 將要被上傳的本地文件的URL。
@param progress 一個監視當前上傳進度的進度對象。
@param completionHandler 當會話任務結束時,執行該Block對象。該Block沒有返回值,但有三個參數:服務器響應對象;解析器生成的響應對象;執行錯誤對象(如果不存在錯誤,則為nil)。
@see “attemptsToRecreateUploadTasksForBackgroundSessions”
*/
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
fromFile:(NSURL *)fileURL
progress:(NSProgress * __autoreleasing *)progress
completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;
/**
根據一個HTTP體創建request對象,再用該request對象創建的一個“NSURLSessionUploadTask”對象
@param request HTTP請求的request。
@param bodyData 一個數據對象,包含將要被上傳的HTTP體。
@param progress 一個監視當前上傳進度的進度對象。
@param completionHandler 當會話任務結束時,執行該Block對象。該Block沒有返回值,但有三個參數:服務器響應對象;解析器生成的響應對象;執行錯誤對象(如果不存在錯誤,則為nil)。
*/
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
fromData:(NSData *)bodyData
progress:(NSProgress * __autoreleasing *)progress
completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;
/**
根據指定的流媒體request對象,創建的一個“NSURLSessionUploadTask”對象
@param request HTTP請求的request。
@param progress 一個監視當前上傳進度的進度對象。
@param completionHandler 當會話任務結束時,執行該Block對象。該Block沒有返回值,但有三個參數:服務器響應對象;解析器生成的響應對象;執行錯誤對象(如果不存在錯誤,則為nil)。
*/
- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request
progress:(NSProgress * __autoreleasing *)progress
completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;
///-----------------------------
/// @name 運行下載的會話任務
///-----------------------------
/**
根據指定的reques對象,創建的一個“NSURLSessionDownloadTask”對象
@param request HTTP請求的request。
@param progress 一個監視當前下載進度的進度對象。
@param destination 一個確定下載文件的存儲路徑的Block對象。有兩個參數:目標路徑和服務器響應對象,并且返回下載文件將要存放的URL。當下載的文件移動到指定目錄后,臨時文件將會自動刪除。
@param completionHandler 當會話任務結束時,執行該Block對象。該Block沒有返回值,但有三個參數:服務器響應對象;下載文件的路徑;網絡或者解析錯誤對象(如果不存在錯誤,則為nil)。
@warning 如果用background類型的“NSURLSessionConfiguration”,當應用程序終止時,這些Block對象將被清除。后臺會話更適合用“-setDownloadTaskDidFinishDownloadingBlock:”方法去指定保存下載文件的URL,而不是本方法。
*/
- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request
progress:(NSProgress * __autoreleasing *)progress
destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination
completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler;
/**
根據指定的、需要恢復的數據,創建的一個“NSURLSessionDownloadTask”對象
@param resumeData 需要恢復的數據對象。
@param progress 一個監視當前下載進度的進度對象。
@param destination 一個確定下載文件的存儲路徑的Block對象。有兩個參數:目標路徑和服務器響應對象,并且返回下載文件將要存放的URL。當下載的文件移動到指定目錄后,臨時文件將會自動刪除。
@param completionHandler 當會話任務結束時,執行該Block對象。該Block沒有返回值,但有三個參數:服務器響應對象;下載文件的路徑;網絡或者解析錯誤對象(如果不存在錯誤,則為nil)。
*/
- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData
progress:(NSProgress * __autoreleasing *)progress
destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination
completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler;
///---------------------------------
/// @name 從會話任務中獲取進度
///---------------------------------
/**
根據指定的會話任務,返回一個上傳進度。
@param uploadTask 上傳會話任務。必須不為空。
@return “NSProgress”對象,封裝了指定上傳會話任務的進度。如果為nil,則進度對象不可用。
*/
- (NSProgress *)uploadProgressForTask:(NSURLSessionUploadTask *)uploadTask;
/**
根據指定的會話任務,返回一個下載進度。
@param downloadTask 下載會話任務。必須不為空。
@return “NSProgress”對象,封裝了指定下載會話任務的進度。如果為nil,則進度對象不可用。
*/
- (NSProgress *)downloadProgressForTask:(NSURLSessionDownloadTask *)downloadTask;
///-----------------------------------------
/// @name 設置會話的委托回調
///-----------------------------------------
/**
設置一個Block,當會話管理器變成無效時執行。用“NSURLSessionDelegate”的“URLSession:didBecomeInvalidWithError: ”方法處理。
@param block 一個Block對象,當會話管理器變成無效時執行。該Block沒有返回值,但有兩個參數:會話對象;與無效原因相關的錯誤對象。
*/
- (void)setSessionDidBecomeInvalidBlock:(void (^)(NSURLSession *session, NSError *error))block;
/**
設置一個Block,當訪問服務器資源需要授權時執行。用“NSURLSessionDelegate”的“URLSession:didReceiveChallenge:completionHandler:”方法處理。
@param block 一個Block對象,當訪問服務器資源需要授權時執行。該Block返回身份驗證的相關處理,并且有三個參數:會話對象;身份驗證對象;一個指針(指向應該被解決的質詢)。
*/
- (void)setSessionDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block;
///--------------------------------------
/// @name 設置會話任務的委托回調
///--------------------------------------
/**
設置一個Block,當一個會話任務需要重新設置“請求體類型的流文件”發送到遠程服務器時,執行。用“NSURLSessionTaskDelegate”的“URLSession:task:needNewBodyStream:”方法處理。
@param block 一個Block對象,當一個會話任務需要重新設置“請求體類型的流文件”時,執行。
*/
- (void)setTaskNeedNewBodyStreamBlock:(NSInputStream * (^)(NSURLSession *session, NSURLSessionTask *task))block;
/**
設置一個Blcok,當一個HTTP請求試圖重定向到另外一個URL時,執行。用“NSURLSessionTaskDelegate”的“URLSession:willPerformHTTPRedirection:newRequest:completionHandler:”方法處理。
@param block 一個Block對象,當HTTP請求嘗試重定向一個新的URL時,執行。該Block返回將要重定向的請求對象,并且有三個參數:會話對象;重定向請求對象;該請求對象返回的響應對象。
*/
- (void)setTaskWillPerformHTTPRedirectionBlock:(NSURLRequest * (^)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request))block;
/**
設置一個Block,當會話任務已經發送“訪問服務器資源所需要的授權”時,執行。用“NSURLSessionTaskDelegate”的“URLSession:task:didReceiveChallenge:completionHandler:”方法處理。
@param block 一個Block對象,當會話任務已經發送“訪問服務器資源所需要的授權”時,執行。該Block返回對授權的處理(NSURLSessionAuthChallengeDisposition類型),并且有四個參數:會話對象;會話任務對象;授權對象;一個指針(指向用于解決授權的憑證)。
*/
- (void)setTaskDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block;
/**
設置一個Block,當定期追蹤上傳進度時,執行。用“NSURLSessionTaskDelegate”的“URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:”方法處理。
@param block 一個Block對象,當一定數量的字節數據已經被上傳到服務器時,執行。該Block沒有返回值,但存在五個參數:會話對象;會話任務對象;上一次上傳的字節數;已經上傳的字節總數;根據最初HTTP體所確定的字節數,得出的剩余未上傳字節數。該Block在主線程執行,并且可能會多次執行。
*/
- (void)setTaskDidSendBodyDataBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block;
/**
設置一個Block,當會話任務發出已執行到末尾的信息時,執行。用“NSURLSessionTaskDelegate”的“URLSession:task:didCompleteWithError:”方法處理。
@param block 一個Block對象,當會話任務已經完成時,執行。該Block沒有返回值,但有三個參數:會話對象;會話任務對象;在執行會話任務時;產生的錯誤對象。
*/
- (void)setTaskDidCompleteBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, NSError *error))block;
///-------------------------------------------
/// @name 設置數據傳輸會話任務的委托回調
///-------------------------------------------
/**
設置一個Block對象,當data會話任務接收到一個響應對象時,執行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:didReceiveResponse:completionHandler:”方法處理。
@param block 一個Block對象,當data會話任務接收到一個響應對象時,執行。該Block返回響應對象的處理,并且有三個參數:會話對象;data會話任務對象;接收到的響應對象。
*/
- (void)setDataTaskDidReceiveResponseBlock:(NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block;
/**
設置一個Block對象,當data會話任務轉換成下載會話任務時,執行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:didBecomeDownloadTask:”方法處理。
@param block 一個Block對象,當data會話任務轉換成下載會話任務時,執行。該Block沒有返回值,但有三個參數:會話對象;data會話任務對象;轉換后的下載會話任務對象。
*/
- (void)setDataTaskDidBecomeDownloadTaskBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask))block;
/**
設置一個Block對象,當data會話任務接受到數據時,執行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:didReceiveData:”方法處理。
@param block 一個Block對象,當已經從服務器中下載一定數量的字節數據后,執行。該Block沒有返回值,但有三個參數:會話對象;data會話任務對象;已接收到得數據。該Block在會話對象的操作隊列中執行,并且可能會多次執行。
*/
- (void)setDataTaskDidReceiveDataBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data))block;
/**
設置一個Block對象,當將要對data會話任務進行緩存操作時,執行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:willCacheResponse:completionHandler:”方法處理。
@param block 一個Block對象,當將要對data會話任務進行緩存操作時,執行。該Block返回緩存的響應對象(NSCachedURLResponse類型),并且存在三個參數:會話對象;data會話任務對象;已接收的響應對象。
*/
- (void)setDataTaskWillCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block;
/**
設置一個Block對象,一旦會話的所有消息隊列全部被發送,則執行該Block。用“NSURLSessionDataDelegate”的“URLSessionDidFinishEventsForBackgroundURLSession:”方法處理。
@param block 一個Block對象,當后臺會話的全部任務都處理完畢時,執行,該Block沒有返回值,但有一個參數:會話對象。
*/
- (void)setDidFinishEventsForBackgroundURLSessionBlock:(void (^)(NSURLSession *session))block;
///-----------------------------------------------
/// @name 設置下載會話任務的委托回調
///-----------------------------------------------
/**
設置一個Block,當下載會話任務結束時,執行。用“NSURLSessionDownloadDelegate”的“URLSession:downloadTask:didFinishDownloadingToURL:”方法處理。
@param block 一個Block對象,當下載會話任務處理完畢時,執行。該Block返回已下載的數據需要存儲的路徑,并且有三個參數:會話對象;下載會話任務對象;當前臨時存儲已下載數據的路徑。還有一個“AFURLSessionDownloadTaskDidFailToMoveFileNotification”通知,其中object參數為下載會話任務,userInfo參數為錯誤對象。
*/
- (void)setDownloadTaskDidFinishDownloadingBlock:(NSURL * (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block;
/**
設置一個Block,當定期追蹤下載進度時,執行。用“NSURLSessionDownloadDelegate”的“URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:”方法處理。
@param block 一個Block對象,當一定數量的字節數據已經被下載時,執行。該Block沒有返回值,但有五個參數:會話對象;下載會話任務對象;上一次下載的字節數;已經下載的字節總數;根據最初HTTP體所確定的字節數,得出的剩余未上傳字節數。該Block在會話對象的操作隊列中執行,并且可能會多次執行。
*/
- (void)setDownloadTaskDidWriteDataBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite))block;
/**
設置一個Block,當一個下載任務已經恢復時,執行。用“NSURLSessionDownloadDelegate”的“URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:”方法處理。
@param block 一個Block對象,當下載會話任務已經恢復時,執行。該Block沒有返回值,但有四個參數:會話對象;下載會話任務對象;一個錨點,描述從什么位置繼續下載該文件;剩余下載量。
*/
- (void)setDownloadTaskDidResumeBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes))block;
@end
#endif
///--------------------
/// @name 通知
///--------------------
/**
已棄用
Posted when a task begins executing.
@deprecated 用“AFNetworkingTaskDidResumeNotification”代替.
*/
extern NSString * const AFNetworkingTaskDidStartNotification DEPRECATED_ATTRIBUTE;
/**
網絡任務恢復時,廣播該通知
*/
extern NSString * const AFNetworkingTaskDidResumeNotification;
/**
已棄用
Posted when a task finishes executing. Includes a userInfo dictionary with additional information about the task.
@deprecated 用“AFNetworkingTaskDidCompleteNotification”代替.
*/
extern NSString * const AFNetworkingTaskDidFinishNotification DEPRECATED_ATTRIBUTE;
/**
網絡任務結束執行時,廣播該通知。
其中包括一個userInfo字典數據,userInfo字典中包含一個關于任務的額外信息。
*/
extern NSString * const AFNetworkingTaskDidCompleteNotification;
/**
網絡任務掛起(暫停)時,廣播該通知。
*/
extern NSString * const AFNetworkingTaskDidSuspendNotification;
/**
當一個網絡會話(session)變為無效時,廣播該通知。
*/
extern NSString * const AFURLSessionDidInvalidateNotification;
/**
在一個網絡會話(session)的下載任務期間,當移動一個臨時的下載文件到指定目錄時,如果遇到錯誤,廣播該通知。
*/
extern NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification;
/**
已棄用
The raw response data of the task. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if response data exists for the task.
@deprecated 用“AFNetworkingTaskDidCompleteResponseDataKey”代替.
*/
extern NSString * const AFNetworkingTaskDidFinishResponseDataKey DEPRECATED_ATTRIBUTE;
/**
網絡任務響應的原始數據數據。
如果網絡任務的響應存在數據,該字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。
*/
extern NSString * const AFNetworkingTaskDidCompleteResponseDataKey;
/**
已棄用
The serialized response object of the task. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if the response was serialized.
@deprecated 用“AFNetworkingTaskDidCompleteSerializedResponseKey”代替.
*/
extern NSString * const AFNetworkingTaskDidFinishSerializedResponseKey DEPRECATED_ATTRIBUTE;
/**
已經完成解析一個網絡響應對象。
如果網絡響應的數據已經完成解析,該字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。
*/
extern NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey;
/**
已棄用
The response serializer used to serialize the response. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if the task has an associated response serializer.
@deprecated 用“AFNetworkingTaskDidCompleteResponseSerializerKey”代替.
*/
extern NSString * const AFNetworkingTaskDidFinishResponseSerializerKey DEPRECATED_ATTRIBUTE;
/**
網絡響應的解析器,用于解析網絡響應。
如果網絡任務關聯了一個網絡響應的解析器,該字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。
*/
extern NSString * const AFNetworkingTaskDidCompleteResponseSerializerKey;
/**
已棄用
The file path associated with the download task. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if an the response data has been stored directly to disk.
@deprecated 用“AFNetworkingTaskDidCompleteAssetPathKey”代替.
*/
extern NSString * const AFNetworkingTaskDidFinishAssetPathKey DEPRECATED_ATTRIBUTE;
/**
下載任務關聯的文件路徑。
如果一個響應數據直接存儲到磁盤,該字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。
*/
extern NSString * const AFNetworkingTaskDidCompleteAssetPathKey;
/**
已棄用
Any error associated with the task, or the serialization of the response. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if an error exists.
@deprecated 用“AFNetworkingTaskDidCompleteErrorKey”代替.
*/
extern NSString * const AFNetworkingTaskDidFinishErrorKey DEPRECATED_ATTRIBUTE;
/**
所有網絡任務中得錯誤,以及解析網絡任務響應數據中的錯誤。
如果錯誤存在,該字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。
*/
extern NSString * const AFNetworkingTaskDidCompleteErrorKey;
參考
GitHub( https://github.com/AFNetworking/AFNetworking/releases )