MKNetworkKit的封装和AfNetwork2.0的封装

</pre><pre name="code" class="objc"><span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="objc"><pre name="code" class="objc">typedef void (^ReturnValueBlock) (id returnValue);
typedef void (^ErrorCodeBlock) (id errorCode);
typedef void (^FailureBlock)();

#import <Foundation/Foundation.h>@interface APIBaseClass : NSObject@property (nonatomic, strong)MKNetworkEngine *engine;+(instancetype)share;#pragma POST请求+ (void) NetRequestPOSTWithRequestURL: (NSString *) requestURLString WithParameter: (NSDictionary *) parameter WithReturnValeuBlock: (ReturnValueBlock) block;#pragma GET请求+ (void) NetRequestGETWithRequestURL: (NSString *) requestURLString WithParameter: (NSDictionary *) parameter WithReturnValeuBlock: (ReturnValueBlock) block;@end
<pre name="code" class="objc">#import "APIBaseClass.h"
#import "JSONKit.h"

@implementation APIBaseClass

+(instancetype)share{
    static APIBaseClass* base = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        base = [APIBaseClass new];
        base.engine = [[MKNetworkEngine alloc]initWithHostName:Main_IP];
    });
    return base;
    
}

#pragma POST请求
+ (void) NetRequestPOSTWithRequestURL: (NSString *) requestURLString
                        WithParameter: (NSDictionary *) parameter
                 WithReturnValeuBlock: (ReturnValueBlock) block{
    if(KSwindow){
        [MBProgressHUD showHUDAddedTo:KSwindow animated:YES];
    }
    MKNetworkEngine *engine = [[APIBaseClass share]engine];
    
    MKNetworkOperation *op = [engine
                              operationWithPath:requestURLString params:parameter httpMethod:@"POST"];
    [op setPostDataEncoding:MKNKPostDataEncodingTypeJSON];
    
    [op addCompletionHandler:^(MKNetworkOperation *completedOperation) {
        [MBProgressHUD hideHUDForView:KSwindow animated:YES];
        NSString *responseString = [completedOperation responseString];
        NSDictionary *dict = [responseString objectFromJSONString];
        
        if([dict[@"code"] integerValue] == 1001){
            block(dict);
        }else{
            if ([dict[@"code"] integerValue] == 1009) {
                block(dict);

            }else {
            
            [self showErrorDescribe:[dict[@"code"] integerValue]];
            }

        }

    } errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
       
        [self showHttpError:error.description];
    }];
    
    [engine enqueueOperation:op];
   
    
}

#pragma GET请求
+ (void) NetRequestGETWithRequestURL: (NSString *) requestURLString
                       WithParameter: (NSDictionary *) parameter
                WithReturnValeuBlock: (ReturnValueBlock) block{
    if(KSwindow){
       [MBProgressHUD showHUDAddedTo:KSwindow animated:YES];
    }
    
    MKNetworkEngine *engine = [[APIBaseClass share]engine];
    
    MKNetworkOperation *op = [engine operationWithPath:requestURLString params:nil httpMethod:@"GET" ssl:NO];
    [engine useCache];
    
    [op addCompletionHandler:^(MKNetworkOperation *operation) {
        [MBProgressHUD hideAllHUDsForView:KSwindow animated:YES];
        NSString *responseString = [operation responseString];
        NSDictionary *dict = [responseString objectFromJSONString];
        
        if([dict[@"code"] integerValue] == 1001){
            block(dict);
        }else{
            [self showErrorDescribe:[dict[@"code"] integerValue]];
        }

    }errorHandler:^(MKNetworkOperation *errorOp, NSError* err) {
        
        NSString *errInfo = err.userInfo[@"NSLocalizedDescription"];
        if(errInfo ==nil){
            errInfo = @"未能连接到服务器";
        }
        
        [self showHttpError:errInfo];
    }];
    [engine enqueueOperation:op];
    
}

+ (void)showErrorDescribe:(NSInteger)code{

    [MBProgressHUD hideHUDForView:KSwindow animated:YES];
    NSString *describe = [ErrorCode errorCode:code];
    if(describe.length == 0) {
        describe = @"请检查您的账号密码";
    }
    [MBProgressHUD showInformationInView:KSwindow WithInfo:describe];
  
}

+ (void)showHttpError:(NSString*)describe{
    
    [MBProgressHUD hideHUDForView:KSwindow animated:YES];
    if(describe.length == 0){
        [MBProgressHUD showInformationInView:KSwindow WithInfo:@"网络错误"];
    }else{
        if(describe.length == 0) {
            describe = @"请检查您的账号密码";
        }
        [MBProgressHUD showInformationInView:KSwindow WithInfo:describe];
    }
    
}

+ (void)showInformationInView:(UIView *)view WithInfo:(NSString *)info {
    MBProgressHUD *_HUD = [[MBProgressHUD alloc] initWithView:view];
    //    _HUD.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"error.png"]];
    _HUD.mode = MBProgressHUDModeCustomView;
    
    _HUD.labelText = info;
    _HUD.labelFont = [UIFont systemFontOfSize:16];
    
    [view addSubview:_HUD];
    
    [_HUD show:YES];
    [_HUD hide:YES afterDelay:0.8];
}
<pre name="code" class="objc">typedef void (^success) (id success);
typedef void (^error) (id error);


 
<span style="font-family: Arial, Helvetica, sans-serif;">/***********************************************************************************************/</span>
AFNetworking:
@interface NetWorkHelper : NSObject
+ (void)NetWorkHelpPostRequestWithAPI:(NSString *)api WithParam:(NSDictionary *)param WithSuccess:(success) successBlock WithError:(error) errorBlock;
+ (void)NetWorkHelpGetRequestWithAPI:(NSString *)api WithParam:(NSDictionary *)param WithSuccess:(success) successBlock WithError:(error) errorBlock;
@end


 
<pre name="code" class="objc">#import "NetWorkHelper.h"


@implementation NetWorkHelper

+ (void)NetWorkHelpGetRequestWithAPI:(NSString *)api WithParam:(NSDictionary *)param WithSuccess:(success) successBlock WithError:(error) errorBlock {

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.requestSerializer=[AFJSONRequestSerializer serializer];
    
    NSString *url = [Main_IP stringByAppendingString:api];

    [manager GET:url parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject)
     {
         NSLog(@"responseString :%@", responseObject);
         NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
         
         successBlock(dict);
     } failure:^(AFHTTPRequestOperation * operation, NSError * error) {
         
         NSLog(@"error:%@", error);
         
         errorBlock(error);
     }];

}

+ (void)NetWorkHelpPostRequestWithAPI:(NSString *)api WithParam:(NSDictionary *)param WithSuccess:(success) successBlock WithError:(error) errorBlock {
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.requestSerializer=[AFJSONRequestSerializer serializer];

    NSString *url = [Main_IP stringByAppendingString:api];
    
    [manager POST:url parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject)
     {   
         NSLog(@"responseString :%@", responseObject);
         NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
         
         successBlock(dict);
     } failure:^(AFHTTPRequestOperation * operation, NSError * error) {

         NSLog(@"error:%@", error);
         
         errorBlock(error);
     }];

}
@end


 
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值