iOS | AFNetworking封装
为大家分享一个IOS处理网络请求,网络上传,网络下载等功能全面的一个第三方框架-AFNetworking,这是一个使用非常方便的网络框架.
最新的版本是基于NSURLSession,原来的NSURLConnectionOperation在此已经移除.
git链接请点击此处
简介
AFNetworking is a delightful networking library for iOS and Mac OS X. It's built on top of the Foundation URL Loading System, extending the powerful high-level networking abstractions built into Cocoa. It has a modular architecture with well-designed, feature-rich APIs that are a joy to use.
Perhaps the most important feature of all, however, is the amazing community of developers who use and contribute to AFNetworking every day. AFNetworking powers some of the most popular and critically-acclaimed apps on the iPhone, iPad, and Mac.
Choose AFNetworking for your next project, or migrate over your existing projects—you'll be happy you did!
翻译:AFNetworking是适用于IOS和MacOS的一个轻量级的网络库.它搭建于URL加载系统的框架之上,扩展了有效的高级网络提取并内置了Cocoa.它提供了设计优秀的模块化体系,方便使用的丰富的API.
最大的特点是每天有惊人数量的社区开发者在为AFNetworking做出贡献. AFNetworking在一些最受欢迎的IPhone,IPad,Mac上的APP都有使用它.
选择AFNetworking在您的下一个项目中,或者移植到你现存的项目上---你将会很乐意于使用它!
大体架构
网络管理类
AFURLSessionManager
AFHTTPSessionManager
请求
AFHTTPRequestSerializer
AFJSONRequestSerializer
AFPropertyListRequestSerializer
响应
AFHTTPResponseSerializer
AFJSONResponseSerializer
AFXMLParserResponseSerializer
AFXMLDocumentResponseSerializer (Mac OS X)
AFPropertyListResponseSerializer
AFImageResponseSerializer
AFCompoundResponseSerializer
AFHTTPSessionManager是AFURLSessionManager的子类,一般推荐使用AFHTTPSessionManager.
在这里我只为大家介绍下封装成工具类的操作,以GET网络请求为例,其他的方法是类似使用的,在项目中大量的使用,这是非常必要的.
创建.h文件
#import <Foundation/Foundation.h>
//因为我是使用pods导入的.所以这里是导入库文件的形式
#import <AFNetworking.h>
@interface NetTools : AFHTTPSessionManager
+(instancetype)shareNetTools;
-(void)GETURLString:(NSString *)URLString andSuccessBlock:(void(^)(id success))successBlock andErrorBlock:(void(^)(NSError *error))errorBlock;
@end
创建.m文件
#import "NetTools.h"
@implementation NetTools
//设计成单例
+(instancetype)shareNetTools
{
static NetTools* instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
//设置baseURL.
NSURL *url = [NSURL URLWithString:@"http://c.m.163.com/nc/"];
instance = [[NetTools alloc] initWithBaseURL:url];
//解决反序列问题
instance.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
});
return instance;
}
//这里是是get请求方法演示,其他的方法类似.
-(void)GETURLString:(NSString *)URLString andSuccessBlock:(void(^)(id success))successBlock andErrorBlock:(void(^)(NSError *error))errorBlock
{
//NSLog(@"当前的请求地址:%@", URLString);
[self GET:URLString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (successBlock) {
successBlock(responseObject);
}
NSLog(@"请求成功^");
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (errorBlock) {
NSLog(@"下载sh%@", error);
errorBlock(error);
}
}];
}
@end
iOS | AFNetworking封装的更多相关文章
- IOS AFNETWORKING POST
IOS AFNETWORKING POST 请求 #pragma mark post 请求 // 获取 url 路劲,不带参数 NSString *requestUrl = [[url compone ...
- iOS - AFNetworking 网络请求
前言 在 iOS 开发中,一般情况下,简单的向某个 Web 站点简单的页面提交请求并获取服务器的响应,用 Xcode 自带的 NSURLConnection 是能胜任的.但是,在绝大部分下我们所需要访 ...
- iOS AFNetworking的使用
转:http://www.cnblogs.com/lookenwu/p/3927897.html AFNetworking几乎是iOS上最常用的HTTP库了,AFNetworking也确实用起来简单, ...
- IOS AFNetworking简介及使用
转:http://www.it165.net/pro/html/201405/13099.html 一AFNetworking简介AFNetworking是一个在IOS开发中使用非常多网络开源库,适用 ...
- iOS AFNetWorking源码详解(一)
来源:Yuzeyang 链接:http://zeeyang.com/2016/02/21/AFNetWorking-one/ 首先来介绍下AFNetWorking,官方介绍如下: AFNetworki ...
- AFNetworking封装思路简析
http://blog.csdn.net/qq_34101611/article/details/51698473 一.AFNetworking的发展 1. AFN 1.0版本 AFN 的基础部分是 ...
- AFNetworking封装-项目使用
本篇博客是接着上一篇AFNetworking源码解析的后续,如果想对AFNetworking源码有所了解. 请读一下https://www.cnblogs.com/guohai-stronger/p/ ...
- iOS 自己封装的网络请求,json解析的类
基本上所有的APP都会涉及网络这块,不管是用AFNetWorking还是自己写的http请求,整个网络框架的搭建很重要. 楼主封装的网络请求类,包括自己写的http请求和AFNetWorking的请求 ...
- [iOS AFNetworking框架实现HTTP请求、多文件图片上传下载]
简单的JSON的HTTP传输就不说了,看一个简单的DEMO吧. 主要明白parameters是所填参数,类型是字典型.我把这部分代码封装起来了,以便多次调用.也许写在一起更清楚点. #pragma m ...
随机推荐
- [LeetCode]20. Valid Parentheses有效的括号
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- Maven学习篇一:依赖了解
1.依赖配置 <project> ... <dependencies> <dependency> <groupId>xx</groupId> ...
- stark——分页、search、actions
一.分页 1.引入自定义分页组件 在/stark目录下创建utils工具包目录,复制page.py到该目录下,文件中有之前自定义的分页组件. class Pagination(object): def ...
- 【HTML&CSS】文本的基本处理
其实在写这篇博客的时候已经学了很久,也写了不少代码,特别是很枯燥的看完整个html部分,因为不带有CSS写出来的东西干巴巴的一点也不好看. 直到展开CSS学习才开来补上博客,嗯,这是个好习惯. 这是运 ...
- 使用Gulp压缩HTML和CSS
---恢复内容开始--- 今天我么继续压缩,但是今天的压缩和之前的不同了!可以说是第二种方法吧! 今天用Gulp来压缩HTML和CSS! 1.首先我们先来安装GUlp:先安装全局gulp 2.然后是开 ...
- chosen下拉框插件的使用
效果如下 第一步: 第二步: 根据HTML5规范, 通常在引入CSS和JS时不需要指明 type,因为 text/css 和 text/javascript 分别是他们的默认值. <link r ...
- ASP.NET MVC Tips
1. _ViewStart.cshtml会在调用每个页面的时候执行,我们可以在页面内设置Layout页面,也可以在这个页面写一些逻辑来根据不同的情况引用不同的Layout页面,详情请参考此处:
- JQuery Tips
另一篇文章 JavaScript Tips 1. 获取span标签的值需要用text(); 2. datepicker控件的‘setDate’属性可用于设置默认值: 3. 使用parseFloat转换 ...
- selenium 等待元素加载
今天,尝试用代码指定自动化测试用例. 将测试record导出为C# 代码后,使用FF的drive ,发现执行一直失败,提示无法加载元素.顿时一种无力感袭来啊.还是硬着头皮找方法.尝试id name x ...
- Java—集合框架Set
Set接口及其实现类——HashSet Set是元素无序并且不可以重复的集合,被称作集. HashSet—哈希集,是Set的一个重要实现类. Set的使用 HashSet没有像List一样的set ...