您的位置:首页 > 理论基础 > 计算机网络

iOS网络编程 - 5

2016-04-24 13:45 417 查看
前面讲述了怎么简单地封装并使用一个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的请求,同理如果需要传其他参数就只要方法多几个不同的参数即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS 网络编程