AFHTTPSessionManager類說明


繼承:AFURLSessionManager:NSObject


遵照:NSCopying, NSSecureCoding


聲明處:AFHTTPSessionManager.h


概述

AFHTTPSessionManager是AFURLSessionManager的子類,為了便利使用HTTP請求。當(dāng)一個baseURL提供時,用相對路徑構(gòu)造GET/POST等便利的方法來創(chuàng)建請求。

子類化注意

開發(fā)人員使用網(wǎng)絡(luò)服務(wù)并且將iOS7或Mac OS X 10.9或更新的版本作為目標(biāo)版本,那么推薦使用AFHTTPSessionManager的子類,提供一個返回共享單例對象的類方法,此單例可以在整個應(yīng)用中共享驗證或其他的配置信息。

對于開發(fā)人員設(shè)置目標(biāo)版本為iOS6或Mac OS X 10.8 或更早的版本,那么AFHTTPRequestOperationManager可以實現(xiàn)相同的效果。

重載的方法

改變所有數(shù)據(jù)的任務(wù)操作結(jié)構(gòu)的行為,同樣使用GET/POST等便利的方法,重載dataTaskWithRequest:completionHandler:.

序列化

一個HTTP端創(chuàng)建的請求,包含默認(rèn)的HTTP頭和依據(jù)requestSerializer屬性編碼的參數(shù),是遵照AFURLRequestSerialization的對象。

服務(wù)器返回的響應(yīng)數(shù)據(jù)是被自動校驗過的并被responseSerializers屬性序列化的,是遵照AFURLResponseSerialization的對象。

URL構(gòu)建使用相對路徑

對于HTTP便利方法,請求序列化構(gòu)造URLs來之baseURL的相對路徑,使用提供的NSURL的方法 +URLWithString:relativeToURL:. 當(dāng)baseURL為nil時,請求路徑使用NSURL的方法+URLWithString:來生成一個有效的NSURL對象。

以下是baseURL和相對路徑互相作用的一些樣例代碼:

NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"];
[NSURL URLWithString:@"foo" relativeToURL:baseURL];                  // http://example.com/v1/foo
[NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL];          // http://example.com/v1/foo?bar=baz
[NSURL URLWithString:@"/foo" relativeToURL:baseURL];                 // http://example.com/foo
[NSURL URLWithString:@"foo/" relativeToURL:baseURL];                 // http://example.com/v1/foo
[NSURL URLWithString:@"/foo/" relativeToURL:baseURL];                // http://example.com/foo/
[NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/

同時特別注意baseURL末尾沒有斜杠時添加一個。否則當(dāng)沒有一個末尾斜杠時,可能在使用路徑構(gòu)架URLs時引起未預(yù)期的行為。

警告:后臺會話的Managers必須在他們使用期間擁有。可以通過創(chuàng)建一個application-wide或分享單例實例來完成。

任務(wù)

其他方法

baseURL 屬性

requestSerializer 屬性

responseSerializer 屬性

初始化

類方法
+ manager
實例方法
– initWithBaseURL:
– initWithBaseURL:sessionConfiguration:

創(chuàng)建HTTP請求

– GET:parameters:success:failure:
– GET:parameters:progress:success:failure:
– HEAD:parameters:success:failure:
– POST:parameters:success:failure:
– POST:parameters:progress:success:failure:
– POST:parameters:constructingBodyWithBlock:success:failure:
– POST:parameters:constructingBodyWithBlock:progress:success:failure:
– PUT:parameters:success:failure:
– PATCH:parameters:success:failure:
– DELETE:parameters:success:failure:

屬性

baseURL

@property (readonly, nonatomic, strong, nullable) NSURL *baseURL

討論

此URL是用在像requestWithMethod:URLString:parameters:方法中根據(jù)相對路徑和GET/POST等便利方法來創(chuàng)建請求。

聲明處

AFHTTPSessionManager.h

requestSerializer

@property (nonatomic, strong) AFHTTPRequestSerializer<AFURLRequestSerialization> *requestSerializer

討論

使用requestWithMethod:URLString:parameters: & multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock這個兩個方法創(chuàng)建的請求,是通過這個屬性指定已經(jīng)參數(shù)序列化好的一組默認(rèn)請求頭構(gòu)建的。默認(rèn)設(shè)置下,這些內(nèi)容設(shè)置在一個為GET,HEAD和DELETE或其他URL-form-encodes的HTTP消息體連接查詢字符串參數(shù)的AFHTTPRequestSerializer實例中。

警告: requestSerializer必須不能為nil。

聲明處

AFHTTPSessionManager.h

responseSerializer

@property (nonatomic, strong) AFHTTPResponseSerializer<AFURLResponseSerialization> *responseSerializer

討論

回應(yīng)序列化是dateTaskWithRequest:success:failure:創(chuàng)建的數(shù)據(jù)任務(wù)使用Get、Post等便利的方法,獲取服務(wù)器返回的響應(yīng)進(jìn)行驗證和通過響應(yīng)序列進(jìn)行序列化。默認(rèn)這個屬性設(shè)置為AFJSONResponseSerializer的實例。

警告: responseSerializer必須不為nil。

聲明處

AFHTTPSessionManager.h

類方法

manager

+ (instancetype)manager

討論

創(chuàng)建和返回一個AFHTTPSessionManager對象。

聲明處

AFHTTPSessionManager.h

實例方法

DELETE:parameters:success:failure:

- (nullable NSURLSessionDataTask *)DELETE:(NSString *)URLString parameters:(nullable id)parameters success:(nullable void ( ^ ) ( NSURLSessionDataTask *task , id _Nullable responseObject ))success failure:(nullable void ( ^ ) ( NSURLSessionDataTask *_Nullable task , NSError *error ))failure

討論

創(chuàng)建和運(yùn)行一個DELETE請求的NSURLSessionDataTask

參數(shù)

URLString

用于創(chuàng)建請求RUL的URL字符串。

parameters

依據(jù)定制的請求序列化被編碼的參數(shù)。

success

一個當(dāng)任務(wù)成功完成時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和被定制的響應(yīng)序列化創(chuàng)建的響應(yīng)對象。

failure

一個當(dāng)任務(wù)完成單沒有成功時,或成功完成但是在解析響應(yīng)數(shù)據(jù)時遭遇一個錯誤時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和描述發(fā)生的網(wǎng)絡(luò)和解析出錯的錯誤。

聲明處

AFHTTPSessionManager.h

GET:parameters:progress:success:failure:

- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(nullable id)parameters progress:(nullable void ( ^ ) ( NSProgress *downloadProgress ))downloadProgress success:(nullable void ( ^ ) ( NSURLSessionDataTask *task , id _Nullable responseObject ))success failure:(nullable void ( ^ ) ( NSURLSessionDataTask *_Nullable task , NSError *error ))failure

討論

創(chuàng)建和運(yùn)行一個GET請求的NSURLSessionDataTask。

參數(shù)

URLString

用于創(chuàng)建請求RUL的URL字符串。

parameters

依據(jù)定制的請求序列化被編碼的參數(shù)。

downloadProgress

一個當(dāng)下載進(jìn)度更新時被執(zhí)行的塊。注意這個塊是在會話隊列中被調(diào)用,而不是在主隊列。

success

一個當(dāng)任務(wù)成功完成時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和被定制的響應(yīng)序列化創(chuàng)建的響應(yīng)對象。

failure

一個當(dāng)任務(wù)完成單沒有成功時,或成功完成但是在解析響應(yīng)數(shù)據(jù)時遭遇一個錯誤時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和描述發(fā)生的網(wǎng)絡(luò)和解析出錯的錯誤。

聲明處

AFHTTPSessionManager.h

GET:parameters:success:failure:

- (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

討論

創(chuàng)建和運(yùn)行一個GET請求的NSURLSessionDataTask。

參數(shù)

URLString

用于創(chuàng)建請求RUL的URL字符串。

parameters

依據(jù)定制的請求序列化被編碼的參數(shù)。

success

一個當(dāng)任務(wù)成功完成時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和被定制的響應(yīng)序列化創(chuàng)建的響應(yīng)對象。

failure

一個當(dāng)任務(wù)完成單沒有成功時,或成功完成但是在解析響應(yīng)數(shù)據(jù)時遭遇一個錯誤時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和描述發(fā)生的網(wǎng)絡(luò)和解析出錯的錯誤。

聲明處

AFHTTPSessionManager.h

HEAD:parameters:success:failure:

- (nullable NSURLSessionDataTask *)HEAD:(NSString *)URLString parameters:(nullable id)parameters success:(nullable void ( ^ ) ( NSURLSessionDataTask *task ))success failure:(nullable void ( ^ ) ( NSURLSessionDataTask *_Nullable task , NSError *error ))failure

討論

創(chuàng)建和運(yùn)行一個HEAD請求的NSURLSessionDataTask。

參數(shù)

URLString

用于創(chuàng)建請求RUL的URL字符串。

parameters

依據(jù)定制的請求序列化被編碼的參數(shù)。

success

一個當(dāng)任務(wù)成功完成時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和被定制的響應(yīng)序列化創(chuàng)建的響應(yīng)對象。

failure

一個當(dāng)任務(wù)完成單沒有成功時,或成功完成但是在解析響應(yīng)數(shù)據(jù)時遭遇一個錯誤時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和描述發(fā)生的網(wǎng)絡(luò)和解析出錯的錯誤。

聲明處

AFHTTPSessionManager.h

PATCH:parameters:success:failure:

- (nullable NSURLSessionDataTask *)PATCH:(NSString *)URLString parameters:(nullable id)parameters success:(nullable void ( ^ ) ( NSURLSessionDataTask *task , id _Nullable responseObject ))success failure:(nullable void ( ^ ) ( NSURLSessionDataTask *_Nullable task , NSError *error ))failure

討論

創(chuàng)建和運(yùn)行一個PATCH請求的NSURLSessionDataTask。

參數(shù)

URLString

用于創(chuàng)建請求RUL的URL字符串。

parameters

依據(jù)定制的請求序列化被編碼的參數(shù)。

success

一個當(dāng)任務(wù)成功完成時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和被定制的響應(yīng)序列化創(chuàng)建的響應(yīng)對象。

failure

一個當(dāng)任務(wù)完成單沒有成功時,或成功完成但是在解析響應(yīng)數(shù)據(jù)時遭遇一個錯誤時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和描述發(fā)生的網(wǎng)絡(luò)和解析出錯的錯誤。

聲明處

AFHTTPSessionManager.h

POST:parameters:constructingBodyWithBlock:progress:success:failure:

- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(nullable id)parameters constructingBodyWithBlock:(nullable void ( ^ ) ( id<AFMultipartFormData> formData ))block progress:(nullable void ( ^ ) ( NSProgress *uploadProgress ))uploadProgress success:(nullable void ( ^ ) ( NSURLSessionDataTask *task , id _Nullable responseObject ))success failure:(nullable void ( ^ ) ( NSURLSessionDataTask *_Nullable task , NSError *error ))failure

討論

創(chuàng)建和運(yùn)行一個多部分的POST請求的NSURLSessionDataTask。

參數(shù)

URLString

用于創(chuàng)建請求RUL的URL字符串。

parameters

依據(jù)定制的請求序列化被編碼的參數(shù)。

block

一個帶一個參數(shù)和追加數(shù)據(jù)到HTTP消息體的塊。這個塊的參數(shù)是一個采用AFMultipartFormData協(xié)議的對象。

uploadProgress

一個當(dāng)上傳進(jìn)度更新時被執(zhí)行的塊。注意這個塊是在會話隊列中被調(diào)用,而不是在主隊列。

success

一個當(dāng)任務(wù)成功完成時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和被定制的響應(yīng)序列化創(chuàng)建的響應(yīng)對象。

failure

一個當(dāng)任務(wù)完成單沒有成功時,或成功完成但是在解析響應(yīng)數(shù)據(jù)時遭遇一個錯誤時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和描述發(fā)生的網(wǎng)絡(luò)和解析出錯的錯誤。

聲明處

AFHTTPSessionManager.h

POST:parameters:constructingBodyWithBlock:success:failure:

- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(nullable id)parameters constructingBodyWithBlock:(nullable void ( ^ ) ( id<AFMultipartFormData> formData ))block success:(nullable void ( ^ ) ( NSURLSessionDataTask *task , id _Nullable responseObject ))success failure:(nullable void ( ^ ) ( NSURLSessionDataTask *_Nullable task , NSError *error ))failure

討論

創(chuàng)建和運(yùn)行一個多部分的POST請求的NSURLSessionDataTask。

參數(shù)

URLString

用于創(chuàng)建請求RUL的URL字符串。

parameters

依據(jù)定制的請求序列化被編碼的參數(shù)。

block

一個帶一個參數(shù)和追加數(shù)據(jù)到HTTP消息體的塊。這個塊的參數(shù)是一個采用AFMultipartFormData協(xié)議的對象。

success

一個當(dāng)任務(wù)成功完成時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和被定制的響應(yīng)序列化創(chuàng)建的響應(yīng)對象。

failure

一個當(dāng)任務(wù)完成單沒有成功時,或成功完成但是在解析響應(yīng)數(shù)據(jù)時遭遇一個錯誤時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和描述發(fā)生的網(wǎng)絡(luò)和解析出錯的錯誤。

聲明處

AFHTTPSessionManager.h

POST:parameters:progress:success:failure:

- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(nullable id)parameters progress:(nullable void ( ^ ) ( NSProgress *uploadProgress ))uploadProgress success:(nullable void ( ^ ) ( NSURLSessionDataTask *task , id _Nullable responseObject ))success failure:(nullable void ( ^ ) ( NSURLSessionDataTask *_Nullable task , NSError *error ))failure

討論

創(chuàng)建和運(yùn)行一個POST請求的NSURLSessionDataTask。

參數(shù)

URLString

用于創(chuàng)建請求RUL的URL字符串。

parameters

依據(jù)定制的請求序列化被編碼的參數(shù)。

uploadProgress

一個當(dāng)上傳進(jìn)度更新時被執(zhí)行的塊。注意這個塊是在會話隊列中被調(diào)用,而不是在主隊列。

success

一個當(dāng)任務(wù)成功完成時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和被定制的響應(yīng)序列化創(chuàng)建的響應(yīng)對象。

failure

一個當(dāng)任務(wù)完成單沒有成功時,或成功完成但是在解析響應(yīng)數(shù)據(jù)時遭遇一個錯誤時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和描述發(fā)生的網(wǎng)絡(luò)和解析出錯的錯誤。

聲明處

AFHTTPSessionManager.h

POST:parameters:success:failure:

- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(nullable id)parameters success:(nullable void ( ^ ) ( NSURLSessionDataTask *task , id _Nullable responseObject ))success failure:(nullable void ( ^ ) ( NSURLSessionDataTask *_Nullable task , NSError *error ))failure

討論

創(chuàng)建和運(yùn)行一個POST請求的NSURLSessionDataTask。

參數(shù)

URLString

用于創(chuàng)建請求RUL的URL字符串。

parameters

依據(jù)定制的請求序列化被編碼的參數(shù)。

success

一個當(dāng)任務(wù)成功完成時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和被定制的響應(yīng)序列化創(chuàng)建的響應(yīng)對象。

failure

一個當(dāng)任務(wù)完成單沒有成功時,或成功完成但是在解析響應(yīng)數(shù)據(jù)時遭遇一個錯誤時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和描述發(fā)生的網(wǎng)絡(luò)和解析出錯的錯誤。

聲明處

AFHTTPSessionManager.h

PUT:parameters:success:failure:

- (nullable NSURLSessionDataTask *)PUT:(NSString *)URLString parameters:(nullable id)parameters success:(nullable void ( ^ ) ( NSURLSessionDataTask *task , id _Nullable responseObject ))success failure:(nullable void ( ^ ) ( NSURLSessionDataTask *_Nullable task , NSError *error ))failure

討論

創(chuàng)建和運(yùn)行一個PUT請求的NSURLSessionDataTask。

參數(shù)

URLString

用于創(chuàng)建請求RUL的URL字符串。

parameters

依據(jù)定制的請求序列化被編碼的參數(shù)。

success

一個當(dāng)任務(wù)成功完成時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和被定制的響應(yīng)序列化創(chuàng)建的響應(yīng)對象。

failure

一個當(dāng)任務(wù)完成單沒有成功時,或成功完成但是在解析響應(yīng)數(shù)據(jù)時遭遇一個錯誤時被執(zhí)行的塊。這個塊沒有返回值和帶兩個參數(shù):數(shù)據(jù)任務(wù)和描述發(fā)生的網(wǎng)絡(luò)和解析出錯的錯誤。

聲明處

AFHTTPSessionManager.h

initWithBaseURL:

- (instancetype)initWithBaseURL:(nullable NSURL *)url

討論

用指定的基礎(chǔ)URL初始化一個AFHTTPSessionManager對象。

參數(shù)

url

HTTP客戶端的基礎(chǔ)URL。

返回值

一個新初始化的HTTP客戶端。

聲明處

AFHTTPSessionManager.h

initWithBaseURL:sessionConfiguration:

- (instancetype)initWithBaseURL:(nullable NSURL *)url sessionConfiguration:(nullable NSURLSessionConfiguration *)configuration

討論

使用指定的基礎(chǔ)URL初始化一個AFHTTPSessionManager對象。
這是特定的初始化方法。

參數(shù)

url

HTTP客戶端的基礎(chǔ)URL。

configuration

配置用來創(chuàng)建會話管理。

返回值

一個新初始化的HTTP客戶端。

聲明處

AFHTTPSessionManager.h

// END 這個類的翻譯,真是的花了一點時間。中間好幾次放棄,去研究React Native。 每想到后面的類方法,重復(fù)的好多。 _

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容