Block封装AFN

//
//  Request.h
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

typedef void(^CallBack)(id data); 
typedef void(^RequestFail)(id obj);

@interface Request : NSObject

//POST
+(void)requestUrl:(NSString *)url parameters:(NSDictionary *)params success:(CallBack)callBack failure:(RequestFail)requestFail;

//GET
+(void)GETRequestURL:(NSString *)url parameters:(NSDictionary *)params success:(CallBack)callBack failure:(RequestFail)requestFail;

//上传图片
+(void)requestUrl:(NSString *)url parameters:(NSDictionary *)params images:(NSArray *)images imageNames:(NSArray *)names success:(CallBack)callBack failure:(RequestFail)requestFail;

+(void)requestUrl:(NSString *)url parameters:(NSDictionary *)params image:(UIImage *)image imageName:(NSString *)name success:(CallBack)callBack failure:(RequestFail)requestFail;
@end
//
//  Request.m
//

#import "YYRequest.h"
#import "AFNetworking.h"

@implementation Request

+(void)requestUrl:(NSString *)url parameters:(NSDictionary *)params success:(CallBack)callBack failure:(RequestFail)requestFail
{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];
    [manager POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
        callBack(dic);
//        NSLog(@"%@", dic);
//        NSString *code = [dic objectForKey:@"code"];
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        requestFail(@"请求错误");
    }];
}

//GET请求
+(void)GETRequestURL:(NSString *)url parameters:(NSDictionary *)params success:(CallBack)callBack failure:(RequestFail)requestFail
{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];

    [manager GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject){
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
        callBack(dic);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        requestFail(@"请求错误");
    }];
}

#pragma mark 上传图片
+(void)requestUrl:(NSString *)url parameters:(NSDictionary *)params images:(NSArray *)images imageNames:(NSArray *)names success:(CallBack)callBack failure:(RequestFail)requestFail
{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];
    [manager POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        NSData *data;
        NSString *name;
        NSString *type;
        for (int i = 0; i < images.count; i++) {
            if (UIImagePNGRepresentation(images[i])) {
                //返回为png图像。
                data = UIImagePNGRepresentation(images[i]);
                name = [NSString stringWithFormat:@"%@.png", names[i]];
                type = @"image/png";
                [formData appendPartWithFileData:data name:names[i] fileName:name mimeType:type];
            }else {
                //返回为JPEG图像。
                data = UIImageJPEGRepresentation(images[i], 1.0);
                name = [NSString stringWithFormat:@"%@.jpg", names[i]];
                type = @"image/jpeg";
                [formData appendPartWithFileData:data name:names[i] fileName:name mimeType:type];
            }
        }

    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
        if ([@"1" isEqualToString:dic[@"state"]]) {
            callBack(dic);
        }
        else
            requestFail([self failReasonWithCode:[dic[@"reason"] integerValue]]);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        requestFail(@"请求错误");
    }];
}

+(void)requestUrl:(NSString *)url parameters:(NSDictionary *)params image:(UIImage *)image imageName:(NSString *)name success:(CallBack)callBack failure:(RequestFail)requestFail
{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];

    [manager POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        if (image) {
            NSData *data;
            if (UIImagePNGRepresentation(image)) {
                data = UIImagePNGRepresentation(image);
                [formData appendPartWithFileData: data name:@"file" fileName:[NSString stringWithFormat:@"%@.png", name] mimeType:@"image/png"];
            }
            else
            {
                data = UIImageJPEGRepresentation(image, 1.0);
                [formData appendPartWithFileData: data name:@"file" fileName:[NSString stringWithFormat:@"%@.jpg", name] mimeType:@"image/jpeg"];
            }

        }
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
        if ([@"1" isEqualToString:dic[@"state"]]) {
            callBack(dic);
        }
        else
            requestFail([self failReasonWithCode:[dic[@"reason"] integerValue]]);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        requestFail(@"请求错误");
    }];
}

#pragma mark 请求失败原因
+(NSString *)failReasonWithCode:(NSInteger)code
{
    if (code == 1005) {
        return @"密码错误!";
    }
    else if (code == 1009)
    {
        return @"手机号已经被注册!";
    }
    else if (code == 1001)
    {
        return @"参数错误";
    }
    else if (code == 1002)
    {
        return @"类别错误";
    }
    else if (code == 1003)
    {
        return @"session失效果,用户重新登陆";
    }
    else if (code == 1004)
    {
        return @"用户不存在或被禁用";
    }
    else if (code == 1006)
    {
        return @"未知错误";
    }
    else if (code == 1007)
    {
        return @"没有登陆";
    }
    else if (code == 1008)
    {
        return @"没有数据";
    }
    else if (code == 1010)
    {
        return @"数据库操作失败";
    }
    else if (code == 1011)
    {
        return @"重复操作";
    }
    else if (code == 1012)
    {
        return @"已经被收藏";
    }
    else if (code == 1013)
    {
        return @"用户信息不存";
    }
    else if (code == 1014)
    {
        return @"密码为空或者少于6位";
    }
    else if (code == 1015)
    {
        return @"手机号码没有被注册";
    }
    else if (code == 1016)
    {
        return @"文件格式不对或者文件大小超过2兆";
    }
    else if (code == 1017)
    {
        return @"用户名已经被注册了";
    }
    else if (code == 1018)
    {
        return @"电话号码格式不正确";
    }
    else if (code == 1019)
    {
        return @"没有购买";
    }
    else if (code == 1020)
    {
        return @"新密码与旧密码一致";
    }
    else if (code == 1021)
    {
        return @"身份证照片必须上传";
    }
    else if (code == 1022)
    {
        return @"头像更新失败";
    }
    else if (code == 1023)
    {
        return @"已经关注";
    }else if (code == 1024)
    {
        return @"手机验证码发送失败";
    }else if (code == 1025)
    {
        return @"token储存失败";
    }else if (code == 1026)
    {
        return @"手机验证码超过当天发送的上限";
    }else if (code == 1027)
    {
        return @"取消关注失败";
    }
    else
        return [NSString stringWithFormat:@"%lu", code];
    return nil;
}
@end
//
//  ViewController.m
//

#import "ViewController.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // 封装的好处:同一管理网络请求,以后AFN框架方法改变,改变工具类即可;解耦合
    [Request requestUrl:@"http://.net/"
             parameters:@{@"Name":@"llili",@"BirthYear":@"12"}
                success:^(id data) { NSLog(@"%@", data); }
                failure:^(id obj) { NSLog(@"%@", obj); }
     ];

}

@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值