文档章节

基于AFNet手动封装网络解析单例

默默沫沫shine
 默默沫沫shine
发布于 2016/05/23 13:38
字数 313
阅读 2
收藏 0

::::loadingView是我根据公司需要 自己封装的一个动画文件。只需要调用 start  stop就可以实现loadingView的加载和消失。略过。

基于AFNetWorking的封装。单例模式,在工程中调用更加方便,不用每次请求创建一个manager。

 

.h文件

#import <Foundation/Foundation.h>

#import "AFNetworking.h"

typedef void(^SuccessType)(id responsData);

typedef void(^Falied)     (NSError *error);

 

@interface NETAnalysisTool : NSObject

@property(nonatomic,copy)AFHTTPSessionManager *manager;

 

+(instancetype)sharedInstance;

 

-(void)POST:(NSString *)url parameters:(NSDictionary *)dict RegisterSuccess:(SuccessType)

                                                                            successBlock   Falied:(Falied)faliedBlock;

 

-(void)GET:(NSString *)url Success:(SuccessType)successBlock

                                 Falied:(Falied)faliedBlock;

 

.m文件

#import "NETAnalysisTool.h"

#import "LoadingView.h"

 

 

@interface NETAnalysisTool ()

 

@end

@implementation NETAnalysisTool

 

+(instancetype)sharedInstance

{

    static NETAnalysisTool *s_tance = nil;

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        s_tance = [[NETAnalysisTool alloc]init];

       

    });

    return s_tance;

}

-(id)init

{

    

    if (self = [super init]) {

        

        _manager = [[AFHTTPSessionManager alloc]init];

        

    }

    return self;

}

 

-(void)POST:(NSString *)url parameters:(NSDictionary *)dict RegisterSuccess:(SuccessType)successBlock

                                                                           Falied:(Falied)faliedBlock

{

    [LoadingView start];

    _manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"image/gif" ,nil];

    [_manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];

    _manager.requestSerializer.timeoutInterval = 10.f;

    [_manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];

    [_manager POST:url parameters:dict success:^(NSURLSessionDataTask *task, id responseObject) {

        [LoadingView stop];

        if (successBlock) {

            

            successBlock(responseObject);

        }

        

    } failure:^(NSURLSessionDataTask *task, NSError *error) {

        

        [LoadingView stop];

        if (faliedBlock) {

            

            faliedBlock(error);

            

        }

        

    }];

}

 

 

-(void)GET:(NSString *)url Success:(SuccessType)successBlock

                                  Falied:(Falied)faliedBlock

{

    [LoadingView start];

    _manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"image/gif" ,nil];

    [_manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];

    _manager.requestSerializer.timeoutInterval = 10.f;

    [_manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];

    [_manager GET:url parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {

        if (successBlock) {

            [LoadingView stop];

            successBlock(responseObject);

            

        }

        

    } failure:^(NSURLSessionDataTask *task, NSError *error) {

       

        [LoadingView stop];

        if (faliedBlock) {

            

            faliedBlock(error);

        }

        

    }];

    

}

@end

 

© 著作权归作者所有

共有 人打赏支持
默默沫沫shine
粉丝 0
博文 15
码字总数 4174
作品 0
朝阳
程序员
私信 提问
iOS监控网络状态并实时刷新界面数据

前言 APP项目中需要实时的检测网络状态是必须的,而且检测的框架很多如Reachability、AFNetworking以及RealReachability,本文所写的内容是采用RealReachability,今天内容的重点并不是实时监...

麦兜卖鱼丸
2016/03/31
20
0
Android 快速开发框架--FastAndroid

这是一个封装了多方面开源库后基于MVP模式的一个Android快速开发框架,融入了MVP模式,将Activity或Fragment做为View层、抽象出Presenter用于处理业务逻辑、Model处理网络访问,数据封装等。降...

huntermr
2016/03/08
1K
0
对系统网络请求进行简单封装

AGConnectionNet 对系统网络请求进行简单封装,可便利的进行网络请求,并将数据解析与网络请求封装在同一方法下,使用更加便利(JSON 解析采用自身解析方法, XML 解析采用第三方 ReadXML 进行解析...

别情花如依丶
2016/04/20
4
0
react+unittest+flask 接口自动化测试平台

1 前言 接口自动化测试的工具很多,比如soapUI,postman,jmeter等等,但是这些通用的工具的可扩展性以及跟项目的契合度上并不是十分合适。 单有框架,还不足以让接口自动化更简化,自动化测...

呐呐丶嘿
12/06
0
0
iOS-网络请求框架(afnetworking)

前言 现在移动端的应用都离不开网络服务,因此与服务器的交互也是必不可少的,所以才涌现出很多的第三方的网络请求架构,但这些架构如果不二次封装,对以后切换其他的网络框架是很麻烦的,因...

麦兜卖鱼丸
2016/04/19
122
0

没有更多内容

加载失败,请刷新页面

加载更多

python自然语言处理快速入门2常见的NLP操作

在本章中,我们将讨论我们文本数据进行的一些常见数据预处理操作,以适配典型的机器学习算法,如贝叶斯、决策树,逻辑回归等等。这些算法都只适用于数字向量,而不是文本。 那么我们如何将文...

python测试开发人工智能安全
16分钟前
0
0
OSChina 周一乱弹 —— 温柔的人应该这样

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @clouddyy :#每日一歌# 《フィクション-sumika》 《フィクション-sumika》 手机党少年们想听歌,请使劲儿戳(这里) 假期时间干嘛去, @for...

小小编辑
33分钟前
9
4
[LintCode] Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)

描述 设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你...

honeymose
今天
6
0
java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
26
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部