• 简单测试AF3.0.4


    网址https://github.com/AFNetworking/AFNetworking

     Swift网络请求的调用:http://swiftcafe.io/2015/12/20/nsurlsession/

    OC 网络请求的调用:http://stackoverflow.com/questions/19099448/send-post-request-using-nsurlsession

    #define API_URL_BASE   @""
    //#define API_URL_BASE   @"https://api.app.net/"
    //#define API_Test @"stream/0/posts/stream/global"
    #define API_UserInfor    @""
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        /**
         * https://github.com/AFNetworking/AFNetworking
         */
        [self createAF3RequestData];
        
    }
    
    
    #pragma mark - AF3.0数据请求
    - (void)createAF3RequestData{
        
        AFHTTPSessionManager *manager =[[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:API_URL_BASE]];
        manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
        
        /*!
         *  @brief GET
         */
        //[ manager GET:@"stream/0/posts/stream/global" parameters:nil progress:nil success:^(NSURLSessionDataTask * __unused task, id JSON) {
           
            //NSLog(@"返回数据%@",JSON);
        //} failure:^(NSURLSessionDataTask *__unused task, NSError *error) {
           
        //}];
        
        /*!
         *  @brief Post
         */
        
        NSMutableDictionary *dic = [NSMutableDictionary dictionary];
        [dic setObject:@"1018" forKey:@"user_id"];
        [dic setObject:@"180" forKey:@"user_depid"];
        
        [manager POST:API_UserInfor parameters:dic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            
            NSLog(@"%@",responseObject);
            
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            
        }];
        
    }
    @end
    

    引用他人资源http://my.oschina.net/u/2252300/blog/615951

    最近更新了AFNetworking的版本,用了最新的3.0.4

    发现较之前使用的2.5版本有较大的区别

    在文件目录结构上3.0.4去除了NSURLConnection这个文件夹和里面的

    AFHTTPRequestOperation.h

    AFHTTPRequestOperation.m

    AFHTTPRequestOperationManager.h

    AFHTTPRequestOperationManager.m

    AFURLConnectionOperation.h

    AFURLConnectionOperation.m

    这6个文件

     

    在之前的2.5版本中我们常使用的方法是:

     
      AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
        mgr.requestSerializer = [AFHTTPRequestSerializer serializer];
        mgr.responseSerializer = [AFJSONResponseSerializer serializer];
                             
        NSDictionary *params = @{ @"PPID":[NSString stringWithFormat:@"%ld", (long)ppId],
                                  @"UserID":userId,
                                };
         
        [mgr POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSDictionary* jsonRsp = (NSDictionary *)responseObject;
            if (isSuccessRsp(jsonRsp))
            {
                success(jsonRsp);
            }
            else
            {
                failure(errorMsgRsp(jsonRsp));
            }
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            failure(error.description);
        }];
    

     
    - (AFHTTPRequestOperation *)POST:(NSString *)URLString
                      headParameters:(id)headParameters
                      bodyParameters:(id)bodyParameters
                             success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
                             failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
    {
        [self setHeadParameters:headParameters];
         
        NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:@"POST" URLString:[[NSURL URLWithString:URLString] absoluteString] parameters:bodyParameters error:nil];
        AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure];
         
        [self.operationQueue addOperation:operation];
         
        return operation;
    

    同时也不需要手动写队列

    现3.0.4使用方法更加简单

     

    - (void)POST:(NSString *)URLString
               headParameters:(id)headParameters
               bodyParameters:(id)bodyParameters
                      success:(void (^)( id responseObject))success
                      failure:(void (^)( NSError *error))failure
    {
        NSURL *url= [NSURL URLWithString:URLString];
        if (url == NULL)
        {
            return;
        }
         
        AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
         
        if (headParameters)
        {
            [self setHeadParameters:headParameters sessionMgr:sessionManager];
        }
     
        [sessionManager POST:[url absoluteString] parameters:bodyParameters progress:^(NSProgress * _Nonnull uploadProgress) {
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            success(responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            failure(error);
        }];
    }
    

     

     

  • 相关阅读:
    2019年3月博客汇总
    赞美郭老师
    多项式初步
    Linux 下安装配置 JDK
    Python搜索目录下指定的文件,并返回绝对路径(包括子目录)
    Python所有的错误都是从BaseException类派生的,常见的错误类型和继承关系
    Python地址簿
    PHP正确的使用复数
    seq
    date
  • 原文地址:https://www.cnblogs.com/superbobo/p/5259304.html
Copyright © 2020-2023  润新知