zoukankan      html  css  js  c++  java
  • AFNetworking3.0使用

    AFHTTPSessionManager:

    根据这个对象可以对请求千设置一些参数和状态

    //得到一个session manager
         AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
        
        NSOperationQueue *operationQueue = [manager operationQueue];
        // 判断网络状态
        [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            switch (status) {
                case AFNetworkReachabilityStatusReachableViaWWAN:
                case AFNetworkReachabilityStatusReachableViaWiFi:
                {
                    [operationQueue setSuspended:NO];
                }
                    break;
                    
                case AFNetworkReachabilityStatusNotReachable:
                default:
                {
                     [operationQueue setSuspended:YES];
                }
                   
                    break;
            }
        }];

    发送请求以GET为例子:

        [manager GET:@"http://apis.baidu.com/apistore/iplookupservice/iplookup" parameters:para progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            NSString *str = responseObject ;
            NSLog(@"suc >>>%@" ,[NSThread currentThread]);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            
        }];

    这里的Block块在主线程,因为底层已经处理了

    这是指定String 类型的URL 还可以不用系统帮我们封装,自己构造request

    NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"GET" URLString:httpUrl parameters:[NSDictionary dictionaryWithObjectsAndKeys:@"117.89.35.58",@"ip" ,nil] error:nil];
        [request addValue:@"5560971e1657a727c71e04ce5b145798" forHTTPHeaderField:@"apikey"];

    建议Request用AF建议的方法构造,AFHTTPRequestSerializer 用于构造序列化的Request,然后交给AFHTTPSessionManager处理得到一个NSURLSessionDataTask

     NSURLSessionDataTask *task = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
           // NSLog(@"res ===%@" , responseObject);
            NSLog(@"suc >>>%@" ,[NSThread currentThread]);
            NSDictionary *dic = responseObject;
            NSLog(@"dic ==%@" ,dic);
        }];

    这里回调也是主线程

    NSURLSessionDataTask有两个方法用来控制任务状态

    - (void)suspend;

    - (void)resume;

    得到NSURLSessionDataTask之后默认状态是Suspend必须调用resume

    AFJSONResponseSerializer 默认初始化@"application/json", @"text/json", @"text/javascript"有这几种,如果内容格式为就会报错@"text/plain",解决办法就是添加进去就行了

  • 相关阅读:
    改了一下分辨率,Areo特效奇迹般的恢复了...
    此连接需要活动的Internet连接
    Apple Mac OS X每日一技巧026:Spotlight打开文件所在的文件夹
    WP7有约(八):在ListPicker控件的选择页面上播放铃声
    WP7有约(七):实现铃声设置的播放图标的效果
    WP7有约(五):回到主页
    WP7有约:一个应用的破蛋过程
    WP7有约(六):AppBarUtils使用指南
    IE与firefox事件处理
    C#试题
  • 原文地址:https://www.cnblogs.com/pigface/p/5072604.html
Copyright © 2011-2022 走看看