iOS网络编程 - 5

前面讲述了怎么简单地封装并使用一个AFNetworking的完整过程

但是如果我们有多个不同的业务的请求,不可能每一次都繁琐滴这样,我们需要用一个外部的类来构建一个网络请求的工具类。

同样,用我们熟悉的单例来实现,我们的思想就是将直接的post请求封装在一个单例类,并提供外部接口方法(根据需求例如,登录接口,注册接口等),

提供额外的参数拼接,成功的回调,失败的回调操作


我们首先需要一个单例的类方法,还有一个组参数的方法(因为很多请求的参数都是有共同部分,用一个可变字典来装)

+ (LBNetworkRequestManager *)sharedManager;

- (NSMutableDictionary *)commonParamsDictionay;


加上我们的封装请求的方法:

@interface LBNetworkRequestManager : NSObject

+ (LBNetworkRequestManager *)sharedManager;

- (NSMutableDictionary *)commonParamsDictionay;

- (void)requestBaseURLWithSuccess:(void(^)(NSString *responseParamOne, NSString *responseParamTwo))successAction failure:(void(^)(NSInteger code, NSString *message))failureAction;

@end


最重要的是讲解这个封装方法的实现:

我们可以看到,成功的回调操作里面有两个responseParamOne,responseParamTwo,这里只外放了两个参数,你可以根据你的需求外放多几个不同的参数,并且我们看到如果请求失败会有一个状态码的返回。

+ (LBNetworkRequestManager *)sharedManager{

    static LBNetworkRequestManager *sharedManager = nil;
    static dispatch_once_t onceToken;
    
    dispatch_once(&onceToken, ^{
    
        sharedManager = [[[self class] alloc] init];
    
    });

    return sharedManager;
}


- (NSMutableDictionary *)commonParamsDictionay{
    
    // compose some comman params ...

    return params;
}

- (void)requestBaseURLWithSuccess:(void (^)(NSString *, NSString *))successAction failure:(void (^)(NSInteger, NSString *))failureAction{

    NSMutableDictionary *params = [self commonParamsDictionay];
    
    // you can add other params ...
    
    [[LBHTTPHelper shareHTTPHelper] postPath:REQUEST_URL parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject){
        
        LBResponseParser *parser = [LBResponseParser shareResponseManager];
        [parser parseResponseObject:responseObject];
        
        if (parser.statusCode == 0) {
            
            NSLog(@"post 服务器失败.");
        }
        
        NSLog(@"respose data :%@", parser.dataDic);
        
        NSString *dev = [parser.dataDic objectForKey:@"dev"];
        NSString *de  = [parser.dataDic  objectForKey:@"de"];
        
        successAction(dev, de);
    
    
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        failureAction(101,@"网络连接超时");
    }];
}


这样我们就根据业务封装了post的请求,同理如果需要传其他参数就只要方法多几个不同的参数即可








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值