//举例如下
- (void)loadData {
/*
参数说明:
1.请求地址
2.请求参数
3.进度回调
4.成功回调
5.错误回调
*/
//1. 请求的是网络数据
NSString *URLString = @"http://news.coolban.com/Api/Index/news_list/app/2/cat/0/limit/20/time/1457168894/type/0";
//2. 封装请求参数
NSMutableDictionary *parameters = [NSMutableDictionary new];
parameters[@"channel"] = @"appstore";
parameters[@"uuid"] = @"19C2BF6A-94F8-4503-8394-2DCD07C36A8F";
parameters[@"net"] = @"5";
parameters[@"model"] = @"iPhone";
parameters[@"ver"] = @"1.0.5";
3.方法调用[[AFHTTPSessionManager manager] GET:URLString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
// AFN自动进行JSON的解析,返回数组或者字典(responseObject)
NSLog(@"%@ %@",[responseObject class],responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@",error);
}];
}
- (void)login {
// 1.请求地址
NSString *URLString = @"http://localhost/php/login/login.php";
// 2.封装请求参数
NSMutableDictionary *parameters = [NSMutableDictionary new];
parameters[@"username"] = @"张三";
parameters[@"password"] = @"zhang";
//方法调用[[AFHTTPSessionManager manager] POST:URLString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"%@ %@",[responseObject class],responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@",error);
}];
}
使用AFN三大注意:
1.由于AFN 发送请求的默认序列号是:NSData(二进制)
假如请求是json数据应该修改,
manager.requestSerializer = [AFJSONRequestSerializer serializer];
2.由于AFN响应的数据是JSON,假如响应的是网页的时候.要修改
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
返回的是二进制数字,可以根据返回的值,进行反序列化
例子:假如返回的是网页:
[manager POST:URLString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//重点***初始化的方法:
NSString *httpString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"%@ %@",[httpString class],httpString);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@",error);
}];
3.默认的响应的解析是JSON ,假如是网页的话处理如下:
AFN默认不支持接受text/html数据类型,只需要增加即可
// 2.1 增加AFN支持的文件类型
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
/*
AFNetworking 内部相关注意点,源代码收集如下:
注意点:
self.requestSerializer = [AFHTTPRequestSerializer serializer];
self.responseSerializer = [AFJSONResponseSerializer serializer];
//重要点
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil];
*/