iOS常用网络库之AFNetWorking
简介
    
 `AFNetworking`是iOS开发网络API中最常用的第三方库,`github`中的`star`数充分说明了它在iOS开发中第三方库中的江湖地位
 github地址:[AFNetworking](https://github.com/AFNetworking/AFNetworking)
 类介绍
 NSURLSession 部分
    AFURLSessionManager  基于NSURLSession,是对NSURLSession的封装并进一步优化使用
其内部其实使用的还是数据任务、上传任务、下载任务
    AFHTTPSessionManager 继承于AFURLSessionManager 封装了一些HTTP请求操作
 Serialization 部分 
 Serialization部分主要是处理请求和响应的
 AFURLRequestSerialization是负责请求的相关设置
    AFURLRequestSerialization    负责管理请求对象中内容的构建,负责管理request的属性等等一些东西  本类对象为manager对象的一个属性
    AFHTTPRequestSerializer       负责管理HTTP请求对象相关的东西 manager默认使用的requestSerializer类型
    AFJSONRequestSerializer       当请求参数为JSON时 使用此类来设置请求
    AFPropertyListRequestSerializer 当请求参数为Plist时 使用此类来设置请求
 AFURLResponseSerialization是负责管理响应的相关设置
     AFHTTPResponseSerializer             负责管理响应对象中内容的构建,负责管理response的属性等等一些东西  本类对象为manager对象的一个属性
     AFJSONResponseSerializer             负责处理JSON  manager对象默认使用的responseSerializer类型
     AFXMLParserResponseSerializer      负责处理XML
     AFPropertyListResponseSerializer   负责处理Plist
     AFImageResponseSerializer            负责处理Image
     AFCompoundResponseSerializer     混合型数据 data
 Additional Functionality
    AFNetworkReachabilityManager  网络连通性  
    AFSecurityPolicy            加密相关
  UIKit相关
   
     GET
1. 访问百度首页
2. 访问糯米API
   接口页面:http://apistore.baidu.com/apiworks/servicedetail/508.html
   APIKey:794a5a140ecc24933911a42c37b5e773
> 响应序列化
> 请求序列化  添加请求头
> 参数都是以字典或数组形式传入
    POST
1. 访问api
   普通请求接口:http://open.weibo.com/wiki/2/statuses/update
   参数都是以字典或数组形式传入
2. multi-part POST
   Multi-Part请求接口:http://open.weibo.com/wiki/2/statuses/upload
   参数:`2.00wzHcQGW4clHD3beba363fa0Tt21m`
   `chengxinyuan4@sina.com`  `chengxinyuan4`
  Tips:
   模拟HTTP请求工具
1. Chrome插件:postman
2. Mac App:[Paw](http://xz.cr173.com/soft2/pw.zip)
  使用Cocoapods后import不提示
选择target(就是左边你的工程target)—— BuildSettings —— search Paths 下的 User
Header Search Paths,点击“+”号添加一项:并且输入:“$(PODS_ROOT)”(没有引号),选择:recursive(会在相应的目录递归搜索文件)
  问题2
`Request failed: unacceptable content-type: text/plain  text/html`
1. 在当前支持的响应序列化中添加支持不支持的类型
    self.acceptableContentTypes = [NSSet
setWithObjects:@"application/json", @"text/json",
@"text/javascript", @"添加",
nil];
2. 切换类型
解释:AF的响应序列化支持一下几种,如果设置的为其中一种,实际返回类型不是那一种,则会报上面错误unacceptable content-type
HTTP:返回data
JSON:返回数组或字典           只支持JSON
XML:返回NSXMLParser        只支持XML
Plist:返回数组或字典
Image:返回image对象
混合数据:返回data
 问题3
```
error:Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start
with array or object and option to allow fragments not set."
```
解释:首先设置的响应类型是JSONSerializer,AF请求到数据后会解析数据,但我们返回的数据不是JSON格式,是HTML所以AF无力了。。。
iOS常用网络库之AFNetWorking的更多相关文章
- iOS常用网络库收集
		
一 ASIHttpRequest二 AFNetworking 三 AFDownloadRequestOperationA progressive download operation for AFNe ...
 - iOS开发网络数据之AFNetworking使用
		
iOS开发网络数据之AFNetworking使用 如何选择AFNetworking版本 首先得下载AFNetworking库文件,下载时得首先弄清楚,你将要开发的软件兼容的最低版本是多少.AFNetw ...
 - IOS常用第三方库《转》
		
UI 动画 网络相关 Model 其他 数据库 缓存处理 PDF 图像浏览及处理 摄像照相视频音频处理 响应式框架 消息相关 版本新API的Demo 代码安全与密码 测试及调试 AppleWatch ...
 - iOS常用第三方库大全,史上最全第三方库收集
		
下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableVie ...
 - IOS常用开源库
		
转自:http://www.csdn.net/article/2013-06-18/2815806-GitHub-iOS-open-source-projects-two/1 1. AFNetwork ...
 - ios 常用第三方库要加的framework,ARC的设置
		
一,常用第三方库要加的framework 1,SQLite3数据库:FMDatabase 需要添加:libsqlite3.dylib 2,网络请求:ASIHTTPRequest 需要添加:CFNetw ...
 - iOS开发网络数据之AFNetworking使用                                                    分类:            ios技术             2015-04-03 16:35    105人阅读    评论(0)    收藏
		
http网络库是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库.最新版本支持session,xctool单元测试.网络获取数 ...
 - ios常用第三方库git下载地址
		
本文转载至 http://blog.csdn.net/cerastes/article/details/38348599 iOS第三方库下载常用git 1.FMDB https://github.co ...
 - iOS开发网络数据之AFNetworking使用1
		
链接地址:http://blog.csdn.net/daiyelang/article/details/38421341 如何选择AFNetworking版本 官网下载2.5版本:http://afn ...
 
随机推荐
- 7、IMS - DNS & ENUM
			
1.相关基础SBC:http://blog.sina.com.cn/s/blog_7a6f76080100vp9r.html 2.ENUM/DNS查询过程:http://blog.sina.com.c ...
 - UML6大关系
			
1.继承关系(inherit) 空心三角+实线 2.实现(接口)关系 空心三角+虚线 3.聚合关系(Aggregation,弱拥有,A对象可以包含B对象,但B对象不是A的一部分) 空心菱形+实线箭头 ...
 - C#:USB设备枚举 --转自CSDN作者:Splash
			
(一)DeviceIoControl的PInvoke /* ---------------------------------------------------------- 文件名称:Device ...
 - Spark Streaming源码解读之Executor容错安全性
			
本期内容 : Executor的WAL 消息重放 数据安全的角度来考虑整个Spark Streaming : 1. Spark Streaming会不断次序的接收数据并不断的产生Job ,不断的提交J ...
 - Sublime插件安装
			
来在Sublime text3上安装Package Control 使用Ctrl+`(ESC下边的那个~)快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: imp ...
 - 使用spring通知时,代理出错
			
动态代理是基于接口的,spring配置是基于类的!!!!!!!!!! 注意:JDK的动态代理,只能对实现接口的类实现代理,生成代理对象,如果这个类没有实现接口,是生成不了代理对象的.如本例UserMa ...
 - NK3C:关于svg文件使用
			
我们从 http://iconfont.cn/ 上下载的SVG文件由以下构成,系统中使用的时候请做适当的修改: 1.width.Height:设置为100%: 2.defs模块去掉:(如果不去掉,IE ...
 - Ninject之旅之九:Ninject上下文绑定(附程序下载)
			
摘要 既然在插件模型里,每一个服务类型可以被映射到多个实现,绑定方法不用决定要返回哪个实现.因为kernel应该返回所有的实现.然而,上下文绑定是多个绑定场景,在这个场景里,kernel需要根据给定的 ...
 - MySQL For Windows Zip解压版安装
			
前言 Windows 下 MySQL 有msi和zip解压安装版两种,而zip版只需解压并做简单配置后就能使用,我个人比较喜欢这种方式. 注意我们这里说的MySQL是指MySQL服务器,有很多初学的同 ...
 - linux 下 TeXmacs 作 Maple 18 的前端
			
TeXmacs的maple 插件比较老,默认条件下无法运行maple 18.且默认情况下maple18不在系统的搜索目录中,导致TeXmacs中不显示 maple 的session.以下假设TeXma ...