您的位置:首页 > 其它

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

2016-01-14 22:55 351 查看
//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;

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