AFNetworking 3.0 GET POST 的简单封装(代理回调)

//GET 方法
+ (void)getJSON:(NSString*)url
       delegate:(id) delegate
didFinishSelector:(SEL)selector
didFailSelector:(SEL)selector2 {
    
    NSURL* requestUrl = [NSURL URLWithString:url];
    
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    
    [manager GET:requestUrl.absoluteString parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
        
        NSDictionary *dic = [self dictionaryWithJsonString:result];
        
        if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
            [delegate performSelector:selector withObject:dic];
#pragma clang diagnostic pop
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSData *data = [error.userInfo objectForKey:@"com.alamofire.serialization.response.error.data"];
        
        NSString *result  =[[ NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        
        if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
            [delegate performSelector:selector2 withObject:result];
#pragma clang diagnostic pop
        }
    }];
}

//POST方法
+ (void)getPOST:(NSString *)url
          param:(NSDictionary *)param
       delegate:(id)delegate
didFinishSelector:(SEL)selector
didFailSelector:(SEL)selector2 {
    
    NSURL *requestUrl = [NSURL URLWithString:url];
    
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    //申明返回的结果是json类型
    manager.responseSerializer    = [AFJSONResponseSerializer serializer];
    //申明请求的数据是json类型
    manager.requestSerializer     = [AFJSONRequestSerializer serializer];
    //如果报接受类型不一致请替换一致text/html或别的
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
    
    [manager POST:requestUrl.absoluteString parameters:param progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSString *result  = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
        NSDictionary *dic = [self dictionaryWithJsonString:result];
        if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
            [delegate performSelector:selector withObject:dic];
#pragma clang diagnostic pop
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSData *data = [error.userInfo objectForKey:@"com.alamofire.serialization.response.error.data"];
        
        NSString *result = [[ NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        
        if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
            [delegate performSelector:selector2 withObject:result];
#pragma clang diagnostic pop
        }
    }];
}

/*!
 * @brief 把格式化的JSON格式的字符串转换成字典
 * @param jsonString JSON格式的字符串
 * @return 返回字典
 */
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
    
    if (jsonString == nil) {
        return nil;
    }
    
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    
    NSError *err;
    
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
                                                        options:NSJSONReadingMutableContainers
                                                          error:&err];
    if (err) {
        DLog(@"json解析失败:%@",err);
        return nil;
    }
    
    return dic;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值