可用于登陆,注册,修改密码,获得手机验证码。

首先导入AFN第三方库

NetWorkTool.h

//  NetWorkTool.h
//  网络请求
//
//  Created by 丁云飞 on 15/11/8.
//  Copyright © 2015年 DLS. All rights reserved.
//#import <Foundation/Foundation.h>
#import "AFNetworking.h"
@protocol netWorkToolDelegate<NSObject>
@optional
/************************获得手机验证码*****************teg == 1*/
-(void)requestSucceedGetData:(NSDictionary *)dict;//成功获得手机验证码调用dict返回数据
-(void)requestFailure;//失败时调用
/************************登陆*************************teg == 2*/
-(void)loginSucceedGetData:(NSDictionary *)dict;//登陆成功
-(void)loginFailure;//登陆失败
/***********************注册*************************teg == 3*/
-(void)registSucceedGetData:(NSDictionary *)dict;//注册发送成功调用;
-(void)registFailure;//注册失败;
/***********************修改密码**********************teg == 4*/
-(void)updataSeccretSucceedGetData:(NSDictionary *)dict;//修改请求发送成功过
-(void)updataSeccretFailure;//失败
@end
@interface NetWorkTool : NSObject
{
AFHTTPRequestOperationManager *_managerr;
AFNetworkReachabilityManager *_afNetworkReach;
}
@property (nonatomic, strong)id<netWorkToolDelegate>delegate;
+ (NetWorkTool *)shareNetWorkJieXi;
/***POST用于登陆,注册,修改密码*/
#pragma mark -- 代理传值
-(void)PostRequestWithUrl:(NSString *)urlStr WithDict:(NSDictionary *)dict WithInteger:(NSInteger)teg;
-(void)GETRequestWithUrl:(NSString *)urlStr WithDict:(NSDictionary *)dict;
#pragma mark -- block形式传值
-(void)PostRequestWithurl:(NSString *)urlStr WithDict:(NSDictionary *)dict Success:(void(^)(id data))successd Failure:(void(^)(NSError *err))failure;
-(void)GetRequestWithurl:(NSString *)urlStr WlthDict:(NSDictionary *)dict Success:(void(^)(id data))successed Failure:(void(^)(NSError *err))failure;@end

NetWorkTool.m

//  Created by 丁云飞 on 15/11/8.
//  Copyright © 2015年 DLS. All rights reserved.
//#import "NetWorkTool.h"
#import "AFNetworking.h"
@interface NetWorkTool()//@property (nonatomic, retain)AFHTTPRequestOperationManager *managerr;
@end
@implementation NetWorkTool
+ (NetWorkTool *)shareNetWorkJieXi{static NetWorkTool *sumbloo;static dispatch_once_t onceSumBToken;dispatch_once(&onceSumBToken, ^{sumbloo = [[NetWorkTool alloc] init];});return sumbloo;
}
- (id)init{self = [super init];if(self){_managerr = [AFHTTPRequestOperationManager manager];_managerr.requestSerializer = [AFHTTPRequestSerializer serializer];_managerr.responseSerializer = [AFHTTPResponseSerializer serializer];//managerr.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"image/jpeg",@"text/html", nil];_afNetworkReach = [AFNetworkReachabilityManager sharedManager];}return self;
}
#pragma mark -- 代理传值
/***  POST请求**  @param urlStr 接口地址*  @param dict   字典*  @param teg    区分不同请求*/
-(void)PostRequestWithUrl:(NSString *)urlStr WithDict:(NSDictionary *)dict WithInteger:(NSInteger)teg{//开启线程[self start];[_managerr POST:urlStr parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {NSDictionary *jiexiDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];NSDictionary *dict=[jiexiDic objectForKey:@"data"];switch (teg) {case 1:[self.delegate requestSucceedGetData:dict];//获得验证码成功break;case 2:[self.delegate loginSucceedGetData:dict];//登陆成功break;case 3:[self.delegate registSucceedGetData:dict];//注册成功break;case 4:[self.delegate updataSeccretSucceedGetData:dict];//修改密码成功default:break;}} failure:^(AFHTTPRequestOperation *operation, NSError *error) {switch (teg) {case 1:[self.delegate requestFailure];break;case 2:[self.delegate loginFailure];break;case 3:[self.delegate registFailure];break;case 4:[self.delegate updataSeccretFailure];default:break;}}];}
/**GET*/
-(void)GETRequestWithUrl:(NSString *)urlStr WithDict :(NSDictionary *)dict{[_managerr GET:urlStr parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {NSDictionary *jiexiDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];NSDictionary *dict=[jiexiDic objectForKey:@"data"];[self.delegate requestSucceedGetData:dict];//获得验证码成功//                [self.delegate loginSucceedGetData:dict];//登陆成功
//
//                [self.delegate registSucceedGetData:dict];//注册成功
//
//                [self.delegate updataSeccretSucceedGetData:dict];//修改密码成功} failure:^(AFHTTPRequestOperation *operation, NSError *error) {[self.delegate requestFailure];//                [self.delegate loginFailure];
//                [self.delegate registFailure];
//
//                [self.delegate updataSeccretFailure];}];
}
#pragma mark -- block传值
//POST
-(void)PostRequestWithurl:(NSString *)urlStr WithDict:(NSDictionary *)dict Success:(void (^)(id data))successd Failure:(void (^)(NSError *))failure{[_managerr POST:urlStr parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {successd(responseObject);} failure:^(AFHTTPRequestOperation *operation, NSError *error) {failure(error);}];
}
//GET
-(void)GetRequestWithurl:(NSString *)urlStr WlthDict:(NSDictionary *)dict Success:(void (^)(id))successed Failure:(void (^)(NSError *))failure{[_managerr GET:urlStr parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {successed(responseObject);} failure:^(AFHTTPRequestOperation *operation, NSError *error) {failure(error);}];
}-(void)start{if ([[_managerr operationQueue] isSuspended]) {[[_managerr operationQueue] setSuspended:NO];}
}@end

有不足支持请大家指出。

转载于:https://www.cnblogs.com/DLS520/p/5017887.html

AFN的简单二次封装相关推荐

  1. Flutter - dio 简单二次封装

    demo 地址: https://github.com/iotjin/jh_flutter_demo Flutter Dio简单二次封装和自定义Header Flutter Dio二次封装 Flutt ...

  2. dio设置自定义post请求_Flutter Dio简单二次封装和自定义Header

    话不多说自己看代码封装的比较简单,比较适合入门学习Dio. import 'package:dio/dio.dart'; import 'Api.dart'; /* * 封装 restful 请求 * ...

  3. vue+elementui 简单二次封装步骤条显示大事记

    效果图: 实现:页面 <template><div class="evnets"><el-steps><el-step v-for=&qu ...

  4. iOS安全之二次封装AFN并设置请求头/执行HTTPS加强安全

    以前都是直接复制粘贴二次封装好的代码 , 现在都忘了怎么写 . 恰好当前项目要用到请求头 , 在网上学习了一下 , 统一敲了一遍 .自从到了现在公司 , 才发现要学的东西太多了 , 当然 , 有个好的 ...

  5. iOS菜鸟之AFN的二次封装

    我用一个单例类将一些常用的网络请求进行了二次封装,主要包括post请求 get请求  图片文件上传下载  视频的断点续传等功能. 首先大家先去github上下载AFN,将文件夹内的AFNetworki ...

  6. 二次封装图片第三方框架——简单工厂模式的运用

    CSDN首发地址: 前言 写在前头,这篇博客对于老司机们没什么多大的意义,老司机们就不用看了,对于新手还是有很大实用价值的. 平时在项目中,你们有没有遇到这样的情况,比如之前项目是使用开源框架Imag ...

  7. Glide二次封装库的使用

    更多代码可以查询本人GitHub:欢迎阅读,star点起来.  Glide二次封装库源码 前言 为什么选择Glide? Glide 轻量级 速度快 可以根据所需加载图片的大小自动适配所需分辨率的图 支 ...

  8. 高德地图markevents_GitHub - mingxuWang/Map: 高德地图API二次封装

    Map组件设计文档 组件设计目的 分析当前各业务方向(销售端.商城.数据可视化.TMS)内地图相关应用的地图功能使用情况,封装Map组件供给各业务向进行使用. 将高德地图API进行二次封装,降低地图相 ...

  9. 基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil

    基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil,把日常能用到的各种CRUD都进行了简化封装,让普通程序员只需关注业务即可,因为非常简单,故直接贴源代码,大家若需使用可以直 ...

最新文章

  1. 带你实现开发者头条(二) 实现左滑菜单
  2. python圆柱体,用PYTHON将圆柱体分散到3D XYZ点数据
  3. #4 什么是shell与bash的特性
  4. fraction函数的分数处理
  5. Centos中常见error(网卡、网络、防火墙)
  6. sql分割以逗号隔开的字符串
  7. .NET西安社区 [拥抱开源,又见 .NET] 活动简报
  8. centos7 安装小记
  9. ajax同步获得数据字典的值,使用ajax加载数据字典,生成select(示例代码)
  10. ViewPager+Fragment实现支持左右滑动的Tab
  11. java中如何生成随机数
  12. 执行maven install 报如下错是什么原因呢?
  13. java熄灯问题,枚举算法案例--熄灯问题
  14. antd a-input-number 的基本使用
  15. 想学脑电,没有数据为什么不看这里?
  16. MGRE结合OSPF
  17. 记一次 RestfulToolkit-fix 插件下载,导致idea启动报错
  18. H5之外部浏览器唤起微信分享
  19. 泊松分布期望和方差推导
  20. 外卖订餐流程 乐杨俊

热门文章

  1. [转]Microsoft SQL Server 自定义函数整理大全
  2. 任务记录:OEA 框架中的多类型树控件
  3. vs2010 学习Silverlight学习笔记(11):数据与通信之WebClient
  4. java中如何传递参数给控制器_如何使用ui-router中的ui-sref将参数传递给控制器
  5. 在Python3里有的变量前面有个*号,或许你不知道,没关系,看文
  6. 【python零基础入门学习】Python入门,带你快速学习为什么那么多人想学 Python?
  7. 直入灵魂的Python教学:《看动漫学Python》让学习不再枯燥
  8. 【TensorFlow】TensorFlow函数精讲之tf.constant()
  9. vue watch 经常监听不到_Vue.js中 watch(深度监听)的最易懂的解释
  10. Char RNN原理介绍以及文本生成实践