ios他人收集整理iOS封装集合

iOS--简单封装 AFNetworking网络请求

2016-12-27  本文已影响558人  TenMios

1. 封装的原因:

2. 封装代码的 .h 文件

2.1 首先 你得新建一个工具类 继承自NSObject
.h文件代码如下 可以直接复制使用
//
//  MOLoadHttpsData.h
//  AJ King
//
//  Created by 林杰 on 2016/12/27.
//  Copyright © 2016年 TenMios. All rights reserved.
//  AFN 网络请求框架的工具类

/**
 * 封装的原因:下次我要改网络请求的时候就直接在这个类里面写一句代码就可以了。
 *           而你没有封装。。就要改所有的请求。一百多个地方就要改一百多次。
 */


#import <Foundation/Foundation.h>


typedef void (^SuccessBlock) (id responseObject);

typedef void (^FailedBlock) (id error);

@interface MOLoadHttpsData : NSObject


/** Post 请求 */
+(void)PostHttpDataWithUrlStr:(NSString *)url Dic:(NSDictionary *)dic SuccessBlock:(SuccessBlock)successBlock FailureBlock:(FailedBlock)failureBlock;

/** Get 请求 */
+(void)GetHttpDataWithUrlStr:(NSString *)url Dic:(NSDictionary *)dic SuccessBlock:(SuccessBlock)successBlock FailureBlock:(FailedBlock)failureBlock;



@end




3. 封装代码的 .m 文件

//
//  MOLoadHttpsData.m
//  AJ King
//
//  Created by 林杰 on 2016/12/27.
//  Copyright © 2016年 TenMios. All rights reserved.
//

#import "MOLoadHttpsData.h"

@implementation MOLoadHttpsData

/** Post 请求 */
+(void)PostHttpDataWithUrlStr:(NSString *)url Dic:(NSDictionary *)dic SuccessBlock:(SuccessBlock)successBlock FailureBlock:(FailedBlock)failureBlock
{
    
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer.acceptableContentTypes =[NSSet setWithObjects:@"text/html",@"text/plain",nil];
    
    [manager POST:url parameters:dic progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        
        /** 这里是处理事件的回调 */
        if (successBlock) {
            successBlock(responseObject);
        }
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        
        /** 这里是处理事件的回调 */
        if (failureBlock) {
            failureBlock(error);
        }
    }
     ];
    
    
}


/** Get 请求 */
+(void)GetHttpDataWithUrlStr:(NSString *)url Dic:(NSDictionary *)dic SuccessBlock:(SuccessBlock)successBlock FailureBlock:(FailedBlock)failureBlock{
    
    
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer.acceptableContentTypes =[NSSet setWithObjects:@"text/html",@"text/plain",nil];
    
    [manager GET:url parameters:dic progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        
        /** 这里是处理事件的回调 */
        if (successBlock) {
            successBlock(responseObject);
        }
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        
        /** 这里是处理事件的回调 */
        if (failureBlock) {
            failureBlock(error);
        }
    }
     
     ];
    
}

@end




4. 如何使用呢?

把封装好的 工具类 放在PCH文件中。 这样以后用到的时候也方便
    [MOLoadHttpsData GetHttpDataWithUrlStr:(这里填写你要请求的接口地址) Dic:(这里填写你要提交的参数) SuccessBlock:^(id responseObject) {
        
      /**
       **  在这里 可以获取到成功返回的请求数据
       **/

   } FailureBlock:^(id error) {

      /**
       **  在这里 可以获取到失败返回的请求数据
       **/
    }];


工程实例 : (仅供参考)

    //  中间
    [SVProgressHUD showWithStatus:@"loading..."];
    [MOLoadHttpsData GetHttpDataWithUrlStr:HomeMidURL Dic:nil SuccessBlock:^(id responseObject) {
        
        NSDictionary *data = responseObject[@"data"];
        self.mids  = [MIOMidModel
                      mj_objectArrayWithKeyValuesArray:data[@"top"]];
        [self.collectionView reloadData];//加载完成  刷新数据
        [SVProgressHUD dismiss];
        
    } FailureBlock:^(id error) {
        // 友情提示
        [SVProgressHUD showErrorWithStatus:@"sorry ! please try again later"];
        
    }];


上一篇下一篇

猜你喜欢

热点阅读