-
AFHTTPRequestOpertaionManager
AFHTTPRequestOperationManager底层包装的是NSURLConnection
- GET & POST
/** GET **/
// 1. 获取HTTP请求操作的Manager
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
// 2. 创建参数字典
NSDictionary *params = @{@"username" : @"JackieYip",@"pwd" : @"345"};
// 3. 发送GET请求
[mgr GET:@"http://120.25.226.186:32812/login" parameter:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
// 4. 回调获取响应数据
// responseObject不是NSURLResponse *对象,而是JSON对象(JSON字典或者JSON数组)或NSXMLParser对象,或既不是JSON也不是XML的文件数据等其他对象
NSLog(@"请求成功--%@", [responseObject class]); //请求成功--_NSCFDicionary
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
//
/** POST **/
// 只需将上例GET程序中的 “3.发送GET请求” 中“GET”改为“POST”即可,方法如下:
[mgr POST:@"..." parameter:params success:^(...){...} failure:^(...){...}];
-
AFURLConnectionOperation在创建一个请求的时候,创建了一个子线程,并给子线程开启了RunLoop
-
AFHTTPSessionManager
AFHTTPSessionManager底层包装的是NSURLSesion
- GET & POST (与AFHTTPRequestOperationManager的实现方式相似,只是回调参数不一样)
/** GET **/
// 1. 获取HTTP会话的Manager
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 2. 创建参数字典
NSDictionary *params = @{@"username" : @"JackieYip",@"pwd" : @"345"};
// 3. 发送GET请求
[mgr GET:@"http://120.25.226.186:32812/login" parameter:params success:^(NSURLSessionDataTask *task, id responseObject) {
// 4. 回调获取响应数据
// responseObject不是NSURLResponse *对象,而是JSON对象(JSON字典或者JSON数组)或NSXMLParser对象,或既不是JSON也不是XML的文件数据等其他对象
NSLog(@"请求成功--%@", [responseObject class]); //请求成功--_NSCFDicionary
} failure:^(NSURLSessionDataTask task, NSError error) {
}];
//
/ POST **/
// 只需将上例GET程序中的 “3.发送GET请求” 中“GET”改为“POST”即可,方法如下:
[mgr POST:@"..." parameter:params success:^(...){...} failure:^(...){...}];
- download
TODO ...
- upload
TODO ...
- 网络状态监控
TODO ...
- 解析返回的数据
- 默认是JSON序列化器,将返回数据以JSON进行解析,解析成NSObject对象
- 修改方法:(如使用AFHTTPSessionManager)
// 将响应序列化器改为JSON序列化器 [[AFHTTPSessionManager manager].responseSerializer = [AFJSONResponseSerializer serializer]; // 将响应序列化器改为XML序列化器 [[AFHTTPSessionManager manager].responseSerializer = [AFXMLParserResponseSerializer serializer]; // 将响应序列化器改为HTTP序列化器(如需返回的数据是文件,该序列化器直接返回服务器给的数据,不作任何解析,即数据仍是二进制数据,NSData数据) [[AFHTTPSessionManager manager].responseSerializer = [AFHTTPResponseSerializer serializer];