iOS网络开发之AFNetworking
概述
AFNetworking是一个非常受欢迎的轻量级的iOS、Mac OS X网络通信类库。它建立在NSURLConnection、NSOperation以及其技术的基础上,有着精心设计的模块结构和功能丰富的API,让很多网络通信功能的实现变得十分简单。
AFNetworking支持HTTP请求和基于REST的网络服务(包括GET、POST、 PUT以及DELETE等)。支持ARC。AFNetworking项目中还包含一些列单元测试。
要求iOS 5.0及以上版本,或者Mac OS 10.7及以上版本。
源码地址:https://github.com/AFNetworking/AFNetworking
实践使用
在源码里,已经介绍得很清楚,下面,为大家贴出部分常用的。
Get方法請求
无参数方式:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:
@"http://example.com/resources.json"
parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(
@"JSON: %@"
, responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(
@"Error: %@"
, error);
}];
有参数方式,其实和无参一样:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSMutableDictionary
*params = [
NSMutableDictionary
dictionary];
params[@
"param1"
] = @
"1"
;
params[@
"param2"
] = @
"2"
;
[manager GET:@
"http://example.com/resources.json"
parameters:params success:^(AFHTTPRequestOperation *operation,
id
responseObject) {
NSLog
(@
"JSON: %@"
, responseObject);
} failure:^(AFHTTPRequestOperation *operation,
NSError
*error) {
NSLog
(@
"Error: %@"
, error);
}];
Post请求方式:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary
*parameters = @{@
"foo"
: @
"bar"
};
[manager POST:@
"http://example.com/resources.json"
parameters:parameters success:^(AFHTTPRequestOperation *operation,
id
responseObject) {
NSLog
(@
"JSON: %@"
, responseObject);
} failure:^(AFHTTPRequestOperation *operation,
NSError
*error) {
NSLog
(@
"Error: %@"
, error);
}];
另外注意:
我们在请求网络的时候,经常会看到返回数据时,有头部信息,如:
Content-Type: application/json
AFNetworking 默认接受的数据类型是(在AFJSONResponseSerializer下):
self
.acceptableContentTypes = [
NSSet
setWithObjects:@
"application/json"
, @
"text/json"
, @
"text/javascript"
,
nil
];
如果返回的数类是text/plain 则会报错。
直接加上该类型即可:
self
.acceptableContentTypes = [
NSSet
setWithObjects:@
"text/plain"
, @
"application/json"
, @
"text/json"
, @
"text/javascript"
,
nil
];
iOS网络开发之AFNetworking的更多相关文章
- iOS多线程开发之GCD(中篇)
前文回顾: 上篇博客讲到GCD的实现是由队列和任务两部分组成,其中获取队列的方式有两种,第一种是通过GCD的API的dispatch_queue_create函数生成Dispatch Queue:第二 ...
- iOS多线程开发之GCD(中级篇)
前文回顾: 上篇博客讲到GCD的实现是由队列和任务两部分组成,其中获取队列的方式有两种,第一种是通过GCD的API的dispatch_queue_create函数生成Dispatch Queue:第二 ...
- 对比iOS网络组件:AFNetworking VS ASIHTTPRequest
对比iOS网络组件:AFNetworking VS ASIHTTPRequest 作者 高嘉峻 发布于 2013年2月28日 | 7 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件 ...
- iOS多线程开发之NSOperation - 快上车,没时间解释了!
一.什么是NSOperation? NSOperation是苹果提供的一套多线程解决方案.实际上NSOperation是基于GCD更高一层的封装,但是比GCD更加的面向对象.代码可读性更高.可控性更强 ...
- iOS游戏开发之UIDynamic
iOS游戏开发之UIDynamic 简介 什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 ...
- iOS多线程开发之NSOperation
一.什么是NSOperation? NSOperation是苹果提供的一套多线程解决方案.实际上NSOperation是基于GCD更高一层的封装,但是比GCD更加的面向对象.代码可读性更高.可控性更强 ...
- iOS多线程开发之GCD(死锁篇)
上篇和中篇讲解了什么是GCD,如何使用GCD,这篇文章将讲解使用GCD中将遇到的死锁问题.有兴趣的朋友可以回顾<iOS多线程开发之GCD(上篇)>和<iOS多线程开发之GCD(中篇) ...
- IOS网络请求框架AFNetworking和ASIHttpRequest对比
ASI基于CFNetwork框架开发,而AFN基于NSURL. ASI更底层,请求使用创建CFHTTPMessageRef进行,使用NSOperationQueue进行管理,ASIHTTPReques ...
- iOS开发之AFNetworking网络编程
众所周知,苹果搞的一套框架NSContention发送请求与接收请求的方式十分繁琐.操作起来很不方便.不仅要做区分各种请求设置各种不同的参数,而且还要经常在多线程里操作,同时还要对请求与返回的数据做各 ...
随机推荐
- Sql Server 2008:调试
调试T-SQL语句: 1.Debug普通T-SQL语句: SQL代码如下: use northwind go declare @i int ,@j int,@k int set @i = 1; set ...
- HDU 3555 数位dp入门
开始想用dp[i][j]来记录第i位j开头含有49的数的个数 但是init后并不知道如何进行cal 想了想可以用不要62的思想 当作不要49来做 然后减一下 就好 看网上的代码 不要62和这道题用的d ...
- 《Java核心技术卷二》笔记(二)文件操作和内存映射文件
文件操作 上一篇已经总结了流操作,其中也包括文件的读写.文件系统除了读写以为还有很多其他的操作,如复制.移动.删除.目录浏览.属性读写等.在Java7之前,一直使用File类用于文件的操作.Java7 ...
- NVPerfHUD
http://www.cnblogs.com/cproom/archive/2006/11/13/559287.html NVPerfHUD是一个很好的3D程序调试工具,它是NVPerfKit的一部分 ...
- php 递归创建目录、递归删除非空目录、迭代创建目录
递归创建目录 方法一 function mk_dir($path){ if(is_dir($path)){ //参数本身是一个目录 return true; } if(is_dir(dirname($ ...
- commandname+commandargument
(一) CommandName:其实可以设置成一种动作,比如Select,Update,Delete,等操作.就是说CommandName是确定他到底引发的是哪一事件,如果CommandName的名字 ...
- C与C++连续赋值的区别
int a,b,c,d; a = b = ; // ( a!=b?a:b) = 1000;//如果a不等于b 那么a = 100;这句话执行完 a还是等于5,b= 100: printf(" ...
- Manipulating Data Structures
Computer Science An Overview _J. Glenn Brookshear _11th Edition We have seen that the way data struc ...
- Off-heap Memory in Apache Flink and the curious JIT compiler
https://flink.apache.org/news/2015/09/16/off-heap-memory.html Running data-intensive code in the J ...
- java 客户端获取真实ip地址
在开发工作中,我们常常需要获取客户端的IP.一般获取客户端的IP地址的方法是:request.getRemoteAddr();但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...