-
AFHTTPRequestOpertaionManager
AFHTTPRequestOperationManager底層包裝的是NSURLConnection
- GET & POST
/** GET **/
// 1. 獲取HTTP請(qǐng)求操作的Manager
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
// 2. 創(chuàng)建參數(shù)字典
NSDictionary *params = @{@"username" : @"JackieYip",@"pwd" : @"345"};
// 3. 發(fā)送GET請(qǐng)求
[mgr GET:@"http://120.25.226.186:32812/login" parameter:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
// 4. 回調(diào)獲取響應(yīng)數(shù)據(jù)
// responseObject不是NSURLResponse *對(duì)象,而是JSON對(duì)象(JSON字典或者JSON數(shù)組)或NSXMLParser對(duì)象,或既不是JSON也不是XML的文件數(shù)據(jù)等其他對(duì)象
NSLog(@"請(qǐng)求成功--%@", [responseObject class]); //請(qǐng)求成功--_NSCFDicionary
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
//
/** POST **/
// 只需將上例GET程序中的 “3.發(fā)送GET請(qǐng)求” 中“GET”改為“POST”即可,方法如下:
[mgr POST:@"..." parameter:params success:^(...){...} failure:^(...){...}];
-
AFURLConnectionOperation在創(chuàng)建一個(gè)請(qǐng)求的時(shí)候,創(chuàng)建了一個(gè)子線(xiàn)程,并給子線(xiàn)程開(kāi)啟了RunLoop
給請(qǐng)求創(chuàng)建子線(xiàn)程,并開(kāi)啟RunLoop -
AFHTTPSessionManager
AFHTTPSessionManager底層包裝的是NSURLSesion
- GET & POST (與AFHTTPRequestOperationManager的實(shí)現(xiàn)方式相似,只是回調(diào)參數(shù)不一樣)
/** GET **/
// 1. 獲取HTTP會(huì)話(huà)的Manager
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 2. 創(chuàng)建參數(shù)字典
NSDictionary *params = @{@"username" : @"JackieYip",@"pwd" : @"345"};
// 3. 發(fā)送GET請(qǐng)求
[mgr GET:@"http://120.25.226.186:32812/login" parameter:params success:^(NSURLSessionDataTask *task, id responseObject) {
// 4. 回調(diào)獲取響應(yīng)數(shù)據(jù)
// responseObject不是NSURLResponse *對(duì)象,而是JSON對(duì)象(JSON字典或者JSON數(shù)組)或NSXMLParser對(duì)象,或既不是JSON也不是XML的文件數(shù)據(jù)等其他對(duì)象
NSLog(@"請(qǐng)求成功--%@", [responseObject class]); //請(qǐng)求成功--_NSCFDicionary
} failure:^(NSURLSessionDataTask task, NSError error) {
}];
//
/ POST **/
// 只需將上例GET程序中的 “3.發(fā)送GET請(qǐng)求” 中“GET”改為“POST”即可,方法如下:
[mgr POST:@"..." parameter:params success:^(...){...} failure:^(...){...}];
- download
TODO ...
- upload
TODO ...
- 網(wǎng)絡(luò)狀態(tài)監(jiān)控
TODO ...
- 解析返回的數(shù)據(jù)
- 默認(rèn)是JSON序列化器,將返回?cái)?shù)據(jù)以JSON進(jìn)行解析,解析成NSObject對(duì)象
- 修改方法:(如使用AFHTTPSessionManager)
// 將響應(yīng)序列化器改為JSON序列化器 [[AFHTTPSessionManager manager].responseSerializer = [AFJSONResponseSerializer serializer]; // 將響應(yīng)序列化器改為XML序列化器 [[AFHTTPSessionManager manager].responseSerializer = [AFXMLParserResponseSerializer serializer]; // 將響應(yīng)序列化器改為HTTP序列化器(如需返回的數(shù)據(jù)是文件,該序列化器直接返回服務(wù)器給的數(shù)據(jù),不作任何解析,即數(shù)據(jù)仍是二進(jìn)制數(shù)據(jù),NSData數(shù)據(jù)) [[AFHTTPSessionManager manager].responseSerializer = [AFHTTPResponseSerializer serializer];