您的位置:首页 > 其它

AFNetworking 大三注意点和简单实用

2017-08-13 00:19 190 查看
AFN GET 简单应用

//举例如下

- (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);

    }];

}

AFN POST 简单应用

- (void)login {

    

    // 1.请求地址

    NSString *URLString = @"http://loca
e6a3
lhost/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];

 

 */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息