文档章节

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

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

精选30+云产品,助力企业轻松上云!>>>

::::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 出现内存泄漏的几种原因

一、从AFNet   对于iOS开发者,网络请求类AFNetWorking是再熟悉不过了,对于AFNetWorking的使用我们通常会对通用参数、网址环境切换、网络状态监测、请求错误信息等进行封装。在封装网络请...

FMDN
2018/01/02
0
0
Android开发 retrofit入门讲解

前言   retrofit基于okhttp封装的网络请求框架,网络请求的工作本质上是 OkHttp 完成,而 retrofit 仅负责网络请求接口的封装.如果你不了解OKhttp建议你还是先了解它在来学习使用retrofit,...

osc_9sai706y
2019/09/26
2
0
af3.0学习使用和理解

af3.0理解使用 af3.0不再使用使用"AFHTTPRequestOperation", 只使用NSURLSession,所以先介绍以下如何使用NSURLSession发起请求 config 什么网络下开始网络请求 NSURLSession 使用config建立连...

iShown
2017/05/08
42
0
AFNetworking封装-项目使用

本篇博客是接着上一篇AFNetworking源码解析的后续,如果想对AFNetworking源码有所了解。 请读一下https://www.cnblogs.com/guohai-stronger/p/9191497.html。 YTKNetwork的源码详解:https:/...

osc_8k5qho63
2018/06/17
5
0
Spring XML Bean 定义的加载和注册

前言 本篇文章主要介绍 Spring IoC 容器怎么加载 的定义元信息。 下图是一个大致的流程图: 第一次画图,画的有点烂。:joy: 正文 首先定义一个简单的 POJO,如下: public class User { priv...

北柠Java
04/16
9
0

没有更多内容

加载失败,请刷新页面

加载更多

一种自我润泽的过程一种自我润泽的过程

读书,是一种自我润泽的过程,是一种“润物细无声”的悠然灌溉。书,是水,是一脉清泉,是精神的甘露;而心,则是一朵荷花,根植在水中,无声无息,吸足水分,自我开放,在晴日的午后,或者静...

asd369
40分钟前
22
0
Hacker News 简讯 2020-07-11

更新时间: 2020-07-11 01:01 Disabling Google 2FA Doesn't Need 2FA - (infoq.com) 禁用google2fa不需要2FA 得分:98 | 评论:33 Rackspace S-1 - (sec.gov) 机架空间S-1 得分:59 | 评论:20 S......

FalconChen
今天
150
0
是否有可能从另一个git存储库中挑选一个提交? - Is it possible to cherry-pick a commit from another git repository?

问题: I'm working with a git repository that needs a commit from another git repository that knows nothing of the first. 我正在使用一个git存储库,需要从另一个不知道第一个存储库......

技术盛宴
昨天
29
0
【LeetCode】53 盛最多水的容器

题目 解题思路 双指针法: https://leetcode-cn.com/problems/container-with-most-water/solution/sheng-zui-duo-shui-de-rong-qi-by-leetcode-solution/ 代码 public class Solution { ......

JaneRoad
昨天
20
0
阿里云OSS配置CDN加速

首先购买CDN流量包 然后添加域名 添加好后 然后将域名OSS.xxxx.com 解析到 生成的CDN域名上 这样就完成了

可达鸭眉头一皱
昨天
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部