-
AFHTTPRequestOpertaionManager
AFHTTPRequestOperationManager底層包裝的是NSURLConnection
- GET & POST
/** GET **/
// 1. 獲取HTTP請求操作的Manager
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
// 2. 創(chuàng)建參數(shù)字典
NSDictionary *params = @{@"username" : @"JackieYip",@"pwd" : @"345"};
// 3. 發(fā)送GET請求
[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 *對象,而是JSON對象(JSON字典或者JSON數(shù)組)或NSXMLParser對象杭隙,或既不是JSON也不是XML的文件數(shù)據(jù)等其他對象
NSLog(@"請求成功--%@", [responseObject class]); //請求成功--_NSCFDicionary
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
//
/** POST **/
// 只需將上例GET程序中的 “3.發(fā)送GET請求” 中“GET”改為“POST”即可哟绊,方法如下:
[mgr POST:@"..." parameter:params success:^(...){...} failure:^(...){...}];
-
AFURLConnectionOperation在創(chuàng)建一個請求的時候,創(chuàng)建了一個子線程痰憎,并給子線程開啟了RunLoop
給請求創(chuàng)建子線程票髓,并開啟RunLoop -
AFHTTPSessionManager
AFHTTPSessionManager底層包裝的是NSURLSesion
- GET & POST (與AFHTTPRequestOperationManager的實(shí)現(xiàn)方式相似,只是回調(diào)參數(shù)不一樣)
/** GET **/
// 1. 獲取HTTP會話的Manager
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 2. 創(chuàng)建參數(shù)字典
NSDictionary *params = @{@"username" : @"JackieYip",@"pwd" : @"345"};
// 3. 發(fā)送GET請求
[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 *對象铣耘,而是JSON對象(JSON字典或者JSON數(shù)組)或NSXMLParser對象洽沟,或既不是JSON也不是XML的文件數(shù)據(jù)等其他對象
NSLog(@"請求成功--%@", [responseObject class]); //請求成功--_NSCFDicionary
} failure:^(NSURLSessionDataTask task, NSError error) {
}];
//
/ POST **/
// 只需將上例GET程序中的 “3.發(fā)送GET請求” 中“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序列化器蜗细,將返回數(shù)據(jù)以JSON進(jìn)行解析裆操,解析成NSObject對象
- 修改方法:(如使用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];