文档章节

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

默默沫沫shine
 默默沫沫shine
发布于 2016/05/23 13:38
字数 313
阅读 2
收藏 0
点赞 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
博文 13
码字总数 4174
作品 0
朝阳
程序员
Android 快速开发框架--FastAndroid

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

huntermr ⋅ 2016/03/08 ⋅ 0

iOS监控网络状态并实时刷新界面数据

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

麦兜卖鱼丸 ⋅ 2016/03/31 ⋅ 0

Android基于DataBinding的一个基础框架

开篇废话 因公司需求,开发了一个基于DataBinding的基础框架,以后公司可能写项目都要按这个框架来写,规范一些,有利于互相读代码。先附上github链接吧——CFramework。 如果不知道什么是D...

一个有故事的程序员 ⋅ 2017/11/01 ⋅ 0

对系统网络请求进行简单封装

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

别情花如依丶 ⋅ 2016/04/20 ⋅ 0

fastweixin v1.2.8 发布,极速微信公众号开发框架

fastweixin 发布 1.2.8 版本,版本更新内容: 新增用户网页授权API:OauthAPI 调用API返回错误时,除了可以得到错误码,还可以得到官方给出的中文描述而不是冷冰冰的英文描述; 优化网络请求结...

愚_者 ⋅ 2015/01/13 ⋅ 7

iOS基于FreeStreamer的仿网易云音乐播放器

前言 前段时间写过一个基于VLCKit实现的网易云音乐播放demo-GKAudioPlayerDemo,以及3篇文章 iOS-VLCKit实现仿网易云音乐播放音乐(一) iOS-VLCKit实现仿网易云音乐播放音乐(二) iOS-VLCK...

QuintGao ⋅ 05/11 ⋅ 0

【step by step 构建轻量级web框架】MVC模块的实现

本系列博文,将会一步一步介绍如何构建一个轻量级的web框架jbeer git地址:http://git.oschina.net/bieber/jbeer 本文主要分享一下在JBeer中MVC模块的Controller解析,主要分享JBeer如何解析...

Bieber ⋅ 2014/07/02 ⋅ 7

iOS-网络请求框架(afnetworking)

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

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

Java 基础(二十)网络框架设计 MyVolley (上)

上周答应大家的,手撸一个网络请求框架。 学了快两个月的 java 基础,现在我们来手撸一个网络请求框架练练手。 手写一个网络请求框架需要掌握的知识点比较多,其中牵涉到设计模式、集合、泛型...

diamond_lin ⋅ 2017/11/30 ⋅ 0

Okhttp3网络请求框架简析思考——Android网络请求框架(五)

站在世界的巅峰看世界的心情,决不是一个普通人能够体会的到的感觉 1、对单例设计模式的思考 创建方式一 、 创建方式 二 创建方式三: 分析 简述: 1-1、可以看到上面三种创建单例的方法,第...

赵子龙 ⋅ 2016/09/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Thrift RPC实战(二) Thrift 网络服务模型

TServer类层次体系 TSimpleServer/TThreadPoolServer是阻塞服务模型 TNonblockingServer/THsHaServer/TThreadedSelectotServer是非阻塞服务模型(NIO) 1 TServer抽象类的定义 内部静态类Args的...

lemonLove ⋅ 9分钟前 ⋅ 0

vim命令用法

第五章 vim命令 vim和vi几乎是一样的,唯一的区别就是当编辑一个文本时,使用vi不会显示颜色,而使用vim会显示颜色。 vim有三个模式:一般模式,编辑模式,命令模式。 系统最小化安装时没有安...

弓正 ⋅ 11分钟前 ⋅ 0

MyBatis源码解读之配置

1. 目的 本文主要介绍MyBatis配置文件解析,通过源码解读mybatis-config.xml(官方默认命名)、Mapper.xml 与Java对象的映射。 2. MyBatis结构 查看大图 MyBatis结构图,原图实在太模糊了,所以...

无忌 ⋅ 15分钟前 ⋅ 0

Ignite的jdbc与网格的连接方式的查询性能对比

环境: 数据量100万 Ignite2.5 Windows10 8g jdbc方式连接 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; i......

仔仔1993 ⋅ 29分钟前 ⋅ 0

收集自网络的wordpress 分页导航的代码教程(全网最全版)

wordpress 分页导航是用来切换文章的一个功能,添加了 wordpress 分页导航后,用户即可自由到达指定的页面数浏览分类文章,而这样的一个很简单功能却有很多朋友在用插件:WP-PageNavi,插件的...

Rhymo-Wu ⋅ 45分钟前 ⋅ 0

微服务 WildFly Swarm 入门

Hello World 就像前面章节中的其他框架一样,我们希望添加一些基本的 Hello-world 功能,然后在其上逐步添加更多的功能。让我们从在我们的项目中创建一个 HolaResources 开始。您可以使用您的...

woshixin ⋅ 52分钟前 ⋅ 0

Maven的安装和Eclipse的配置

1. 下载Maven 下载地址 2. 解压压缩包,放到自己习惯的硬盘中 此处我将其放到了 D:\Tools 目录下。 3. 配置环境变量 右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量。 在系统变量中新建,变...

影狼 ⋅ 59分钟前 ⋅ 0

python pip使用国内镜像的方法

国内源 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://......

良言 ⋅ 今天 ⋅ 0

对于url变化的spa应该如何使用微信jssdk

使用vue单页面碰上微信jssdk config验证失败的坑。第一次成功 之后切换页面全部失败,找到了解决方法,第一次验证成功后保存验证信息 切换页面时验证信息直接拿来用,加一个wx.error() 失败时...

孙冠峰 ⋅ 今天 ⋅ 0

Spring Cloud Gateway 一般集成

SCF发布,带来很多新东西,不过少了点教程,打开方式又和以前的不一样,比如这个SCG,压根就没有入门指导,所以这里写一个,以备后用。 一、集成 pom.xml <dependency> <groupI...

kut ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部