首页 热点专区 小学知识 中学知识 出国留学 考研考公
您的当前位置:首页正文

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

2024-12-18 来源:要发发知识网

目录


<a id="what_cocoa"></a> 什么是cocoapods

CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 27 thousand libraries and is used in over 1.6 million apps. CocoaPods can help you scale your projects elegantly

cocaopods是一个针对Swift和Objective开发的依赖管理工具,目前它拥有超过2.7万个库和160万个应用程序,cocoapods可以帮助你更方便,便捷的扩展你的项目.cocoapods源码是在github上进行管理的,就像java语言的maven,nodejs的npm一样,当前cocaopods已经成为iOS开发的依赖管理工具标准,cocoapods的出现一方面为我们项目省去了项目引入或者更新第三方库时在环境部署上的时间,另一方面也为模块化提供了实现途径.

<a id="make_coca"></a> cocoapods共公库制作

自行百度吧,自己动手丰衣足食,有时间时自己也会把发布AhNetManager期间遇到的坑贴出来.

<a id="intro_ahnet"></a> AhNetManager介绍

<a id="dowhat_ahnet"></a> 为什么做AhNetManager

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

<a id="install_ahnet"></a> AhNetManager安装

使用cocoapods安装

    pod 'AhManager', '~> 0.3.8'

手动安装

导入NETManager文件夹以及所含文件到自己的项目中

<div><font color=#0099ff size=3 face="黑体">注意: pod后可能会会出现出现不能引入Netmanager.h的情况,选择工程的 Target -> Build Settings 菜单,找到\”User Header Search Paths\”设置项
新增一个值"$(PODS_ROOT)",并且选择\”recursive\”,这样xcode就会在项目目录中递归搜索文件自动补齐功能马上就好使了。</div>

<a id="examples_ahnet"></a> AhNetmanager操作示例

<a id="set_ahnet"></a> 配置初始化

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    
    
    //  网络初始化
    
    [SystemSet defaultSet].HOST = @"你项目的url的公共头";
    [SystemSet defaultSet].SUFFIX = @"你项目的url的公共尾";
    // 可以不设置,那所有的status都会在回调句柄中返回
    [SystemSet defaultSet].SucStatus = @"服务器自定义的正常状态码";
    
    return YES;
}

<a id="post_ahnet"></a> 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) {
        
    }];
    
    
}

<a id="postimg_ahnet"></a> 上传图片示例

- (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) {
        
        
        
    }];
}
显示全文