AhManager 0.4.1

AhManager 0.4.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2017年1月

DUJIAJIA 维护。



 
依赖项
AFNetworking~> 3.1.0
MJExtension~> 3.0.13
MBProgressHUD~> 1.0.0
 

AhManager 0.4.1

  • ah

AhNetmanager基于AFN封装的网络处理层

目录


AhNetManager 介绍

为什么做 AhNetManager

AhNetManager 是一款基于 AFN 封装的网络处理层,支持 Cocoapods,封装的目的是因为公司要做模块化开发,将 AFN 封装后使用 Cocoapods 制作成公共库,为公司的所有项目提供网络处理功能,AhNetManager 让初中级开发工程师只关注业务逻辑功能的实现。

AhNetManager 安装

手动安装

将 NETManager 文件夹及其包含的文件导入到您自己的项目中

AhNetmanager 操作示例

配置初始化

在 AppDelegate.m 的 didFinishLaunchingWithOptions 方法中进行网络初始化配置,这些配置在你进行网络请求前需要设置好,且只需设置一次。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{


    //  网络初始化

    [SystemSet defaultSet].HOST = @"你项目的url的公共头";
    [SystemSet defaultSet].SUFFIX = @"你项目的url的公共尾";
    // 可以不设置,那所有的status都会在回调句柄中返回
    [SystemSet defaultSet].SucStatus = @"服务器自定义的正常状态码";

    return YES;
}

POST 示例

不演示 GET 请求。很简单

- (IBAction)btn1:(id)sender {

 //  post请求示例  具体请参看Demo 
 //  注意 Hea004 是AhRequest的子类,如果你只是一个项目的话,你可以在AhRequest类中根据自己产品的业务逻辑书写请求模型,
 //  若是和我们一样,多个项目使用该网络处理层,我们需要把网络处理层和业务逻辑拆分开,我建议创建一AhRequest的子类,在该子类里边实现相关的业务逻辑
    Hea004 *request = [[Hea004 alloc]init];
    request.username = @"17011111111";
    request.userpwd = @"200820E3227815ED1756A6B531E7E0D2";
    [NetManager POST:Health004 parameters:request progress:^(int64_t bytesRead, int64_t totalBytesRead) {

    } success:^(id responseObject, NSString *status) {

        //  登录成功
        NSLog(@"登录成功");

    } failure:^(NSError *error) {

    }];


}

上传图片示例

- (IBAction)btn2:(id)sender {

    Bre011 *request = [[Bre011 alloc]init];
    request.action = @"addImg";
    UIImage *img = [UIImage imageNamed:@"test.png"];
    [NetManager POST:Breach011 parameters:request image:img progress:^(int64_t bytesRead, int64_t totalBytesRead) {

        NSLog(@"图片上传%zd==总共%zd",bytesRead,totalBytesRead);

    } success:^(id responseObject,NSString*status) {

        Bre011Res *result = (Bre011Res *)responseObject;
        Bre011ResItem *item = result.data.firstObject;
        NSLog(@"图片所在服务器路径:%@",item.picurl);

    } failure:^(NSError *error) {



    }];
}

待开发功能

因为我们现在没有视频类或 OA 类的项目,诸如上传文件、下载视频等功能也就没有去实现,以后有时间了会完善起来。

就写到这里吧,我的语文是体育老师教的,语言表述不当之处还望海涵,各位大侠不必纠结于以下几个问题:

  1. 我本来就已经使用了 AFN,你 Why 还要对 AFN 进行封装,而且功能还这么少。
  2. 你这个 Why 不对底层进行封装呢?
针对第一个问题,我相信你的项目也是对AFN进行了封装,目的何在呢?个人认为这样就避免了每一个控制器中都有AFN的身影,将AFN与我们的项目分割开来,想想AFN2.0 迁移到AFN3.0,每一个控制器中都要改的话,那是多么的酸爽。
我不知道你的项目有没有经历从ASI转移到AFN的时期,如果不封装,呵呵 想想都觉得忧伤。
针对第二个问题,我觉得AFN真的已经做得很好了,这么好的轮子,干嘛不能借鉴鲁迅先生的拿来主义呢,如果封装底层功能,且不论能不能与AFN比肩,时间成本就要多很多出去,留出这些时间,我可以去学习一些更需要我去学习的,比如RN,比如MUI,比如PMP