iOS_AFN

AFN的六大模塊

NSURLConnection,

主要對(duì)NSURLConnection進(jìn)行了進(jìn)一步的封裝,包含以下核心的類:

AFURLConnectionOperation

AFHTTPRequestOperationManager

AFHTTPRequestOperation

NSURLsession,

主要對(duì)象NSURLSession對(duì)象進(jìn)行了進(jìn)一步的封裝,包含以下核心的類:

AFURLSessionManager

AFHTTPSessionManager

Reachability,

提供了與網(wǎng)絡(luò)狀態(tài)相關(guān)的操作接口,包含以下核心的類:

AFNetworkReachabilityManager

Security,

提供了與安全性相關(guān)的操作接口,包含以下核心的類:

AFSecurityPolicy

Serialization,

提供了與解析數(shù)據(jù)相關(guān)的操作接口,包含以下核心的類:

AFURLRequestSerialization

AFURLResponseSerialization

UIKit,

提供了大量網(wǎng)絡(luò)請(qǐng)求過程中與UI界面顯示相關(guān)的操作接口,通常用于網(wǎng)絡(luò)請(qǐng)求過程中提示,使用戶交互更加友好,包含以下核心的分類/類:

AFNetworkActivityIndicatorManager

UIActivityIndicatorView+AFNetworking

UIAlertView+AFNetworking

UIButton+AFNetworking

UIImageView+AFNetworking

UIKit+AFNetworking

UiprogressView+AFNetworking

UIRefreshControl+AFNetworking

UIWebView+AFNetworking

AFURLSessionManager

創(chuàng)建任務(wù)的方法

普通任務(wù)

- (NSURLSessionDataTask*)dataTaskWithRequest:(NSURLRequest*)request completionHandler:(void (^)(NSURLResponse*response, id responSEObject, NSError*error))completionHandler/*** request:請(qǐng)求對(duì)象* completionHandler:請(qǐng)求完成調(diào)用的Block* response:服務(wù)器的響應(yīng)信息* responseObject:服務(wù)器返回的數(shù)據(jù)* error:錯(cuò)誤信息*/


上傳任務(wù)(分別上傳不同類型的文件)


1. 上傳文件類型的數(shù)據(jù)

- (NSURLSessionUploadTask*)uploadTaskWithRequest:(NSURLRequest*)request fromFile:(NSURL*)fileURL progress:(NSProgress* __autoreleasing*)progress completionHandler:(void (^)(NSURLResponse*response, id responseObject, NSError*error))completionHandler/*** fileURL:所要上傳文件的路徑*///?

2. 上傳NSData類型的數(shù)據(jù)

- (NSURLSessionUploadTask*)uploadTaskWithRequest:(NSURLRequest*)request fromData:(NSData*)bodyData progress:(NSProgress* __autoreleasing*)progress completionHandler:(void (^)(NSURLResponse*response, id responseObject, NSError*error))completionHandler/*** bodyData:所要上傳的文件數(shù)據(jù)*///?

3. 上傳流數(shù)據(jù)

- (NSURLSessionUploadTask*)uploadTaskWithStreamedRequest:(NSURLRequest*)request progress:(NSProgress* __autoreleasing*)progress completionHandler:(void (^)(NSURLResponse*response, id responseObject, NSError*error))completionHandler/*** request:通過流數(shù)據(jù)初始化的請(qǐng)求對(duì)象*/


下載任務(wù)


// 1. 普通下載任務(wù)

- (NSURLSessionDownloadTask*)downloadTaskWithRequest:(NSURLRequest*)request progress:(NSProgress* __autoreleasing*)progress destination:(NSURL* (^)(NSURL*targetPath, NSURLResponse*response))destination completionHandler:(void (^)(NSURLResponse*response, NSURL*filePath, NSError*error))completionHandler

/*** progress:管理下載進(jìn)度* destination:保存數(shù)據(jù)調(diào)用的Block* targetPath:數(shù)據(jù)的保存路徑* 服務(wù)器的響應(yīng)信息*///

?2. 支持?jǐn)帱c(diǎn)下載的下載任務(wù)

- (NSURLSessionDownloadTask*)downloadTaskWithResumeData:(NSData*)resumeData progress:(NSProgress* __autoreleasing*)progress destination:(NSURL* (^)(NSURL*targetPath, NSURLResponse*response))destination completionHandler:(void (^)(NSURLResponse*response, NSURL*filePath, NSError*error))completionHandler

?/*** progress:管理下載進(jìn)度* resumeData:斷點(diǎn)下載時(shí)的斷點(diǎn)信息*/


AFHTTPSessionManager


常用的屬性

baseURL(NSURL *),用于監(jiān)視網(wǎng)絡(luò)可達(dá)性與創(chuàng)建請(qǐng)求對(duì)象

requestSerializer(AFHTTPRequestSerializer?*),指定指定GET、HEAD與DELETE請(qǐng)求參數(shù)的解析格式

responseSerializer(AFHTTPResponseSerializer?*),用于指定服務(wù)器返回?cái)?shù)據(jù)的格式

常用方法

初始化

// 1. 通過工廠方法創(chuàng)建AFHTTPSessionManager對(duì)象

+ (instancetype)manager//?

2. 通過構(gòu)造方法創(chuàng)建AFHTTPSessionManager對(duì)象

- (instancetype)initWithBaseURL:(NSURL*)url/*** 根據(jù)url初始化AFHTTPSessionManager對(duì)象*/- (instancetype)initWithBaseURL:(NSURL*)url sessionConfiguration:(NSURLSessionConfiguration*)configuration/*** 根據(jù)url與configuration初始化AFHTTPSessionManager對(duì)象*/

請(qǐng)求數(shù)據(jù)

// 1. GET請(qǐng)求- (NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(id)parameters success:(void (^)(NSURLSessionDataTask *task,id responseObject))success failure:(void (^)(NSURLSessionDataTask *task,NSError *error))failure/*** URLString:請(qǐng)求路徑* parameters:請(qǐng)求參數(shù)* success:請(qǐng)求成功時(shí)調(diào)用的Block* responseObject:服務(wù)器返回的數(shù)據(jù)* failure:請(qǐng)求失敗時(shí)調(diào)用的Block* error:錯(cuò)誤信息*///

?2. POST請(qǐng)求- (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters success:(void (^)(NSURLSessionDataTask *task,id responseObject))success failure:(void (^)(NSURLSessionDataTask *task,NSError *error))failure/*** 參數(shù)含義與GET請(qǐng)求相同*/- (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters constructingBodyWithBlock:(void (^)(id formData))block success:(void (^)(NSURLSessionDataTask *task,id responseObject))success failure:(void (^)(NSURLSessionDataTask *task,NSError *error))failure/**

* block:用于創(chuàng)建多個(gè)數(shù)據(jù)來源

*/


使用AFN請(qǐng)求網(wǎng)絡(luò)數(shù)據(jù)


請(qǐng)求數(shù)據(jù)(xml/JSON)

創(chuàng)建AFHTTPSessionManager對(duì)象

AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];

指定對(duì)服務(wù)器的返回?cái)?shù)據(jù)格式

//以XML文檔的形式返回?cái)?shù)據(jù)

manager.responseSerializer = [AFXMLParserResponseSerializer serializer];

//以JSON形式返回?cái)?shù)據(jù)

manager.responseSerializer = [AFJSONResponseSerializer serializer];

設(shè)置請(qǐng)求體(類型為XML或JSON)

// 請(qǐng)求體通常由服務(wù)器指定格式

NSDictionary *params = @{@"username" :@"賬號(hào)",@"pwd" :@"密碼",@"type" :@"XML/JSON"};

發(fā)送請(qǐng)求

[manager GET:@"請(qǐng)求路徑" parameters:params success:^(NSURLSessionDataTask *task, id responseObject){

//responseObject:服務(wù)器返回的數(shù)據(jù)? ?

?NSLog(@"請(qǐng)求成功");

} failure:^(NSURLSessionDataTask *task, NSError *error){

//error:錯(cuò)誤信息? ? NSLog(@"請(qǐng)求失敗");

}];

上傳數(shù)據(jù)

創(chuàng)建AFHTTPSessionManager對(duì)象

AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];

創(chuàng)建上傳任務(wù)

/**基于NSURLConnection*/

[manager POST:@"請(qǐng)求路徑" parameters:@{@"用戶名" : @"密碼"constructingBodyWithBlock:^(id formData) {

//設(shè)置需要上傳的文件? ??

NSData *data = [NSData dataWithContentsOfFile:@"所要長(zhǎng)傳文件的路徑"];? ??

[formData appendPartWithFileData:dataname:@"file"fileName:@"test.png"mimeType:@"image/png"];

}success:^(NSURLSessionDataTask *task, id responseObject) {

//上傳成功

}failure:^(NSURLSessionDataTask *task, NSError *error) {

//上傳失敗}];

/**基于NSURLSession*/[manager uploadTaskWithRequest:requestfromData:dataprogress:progresscompletionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {

//上傳數(shù)據(jù)成功

}];

下載數(shù)據(jù)

創(chuàng)建AFHTTPSessionManager對(duì)象

AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];

創(chuàng)建下載任務(wù)

/**基于NSURLSession*/[manager downloadTaskWithRequest:request progress:progress destination:^NSURL*(NSURL*targetPath, NSURLResponse*response) {? ? // 存儲(chǔ)下載數(shù)據(jù)是調(diào)用的Block} completionHandler:^(NSURLResponse*response, NSURL*filePath, NSError*error) {

//下載完成時(shí)調(diào)用的Block

}]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容