简介



​   

 `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的更多相关文章

  1. iOS常用网络库收集

    一 ASIHttpRequest二 AFNetworking 三 AFDownloadRequestOperationA progressive download operation for AFNe ...

  2. iOS开发网络数据之AFNetworking使用

    iOS开发网络数据之AFNetworking使用 如何选择AFNetworking版本 首先得下载AFNetworking库文件,下载时得首先弄清楚,你将要开发的软件兼容的最低版本是多少.AFNetw ...

  3. IOS常用第三方库《转》

    UI 动画 网络相关 Model 其他 数据库 缓存处理 PDF 图像浏览及处理 摄像照相视频音频处理 响应式框架 消息相关 版本新API的Demo 代码安全与密码 测试及调试 AppleWatch ...

  4. iOS常用第三方库大全,史上最全第三方库收集

    下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableVie ...

  5. IOS常用开源库

    转自:http://www.csdn.net/article/2013-06-18/2815806-GitHub-iOS-open-source-projects-two/1 1. AFNetwork ...

  6. ios 常用第三方库要加的framework,ARC的设置

    一,常用第三方库要加的framework 1,SQLite3数据库:FMDatabase 需要添加:libsqlite3.dylib 2,网络请求:ASIHTTPRequest 需要添加:CFNetw ...

  7. iOS开发网络数据之AFNetworking使用 分类: ios技术 2015-04-03 16:35 105人阅读 评论(0) 收藏

    http网络库是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库.最新版本支持session,xctool单元测试.网络获取数 ...

  8. ios常用第三方库git下载地址

    本文转载至 http://blog.csdn.net/cerastes/article/details/38348599 iOS第三方库下载常用git 1.FMDB https://github.co ...

  9. iOS开发网络数据之AFNetworking使用1

    链接地址:http://blog.csdn.net/daiyelang/article/details/38421341 如何选择AFNetworking版本 官网下载2.5版本:http://afn ...

随机推荐

  1. ssh那些事儿

    第一次使用ssh是上学期搭建hadoop集群的时候,当时照着各种配置文档费了九牛二虎之力终于把环境搭建成功,现在想想当时还真是不容易呢.好了废话不扯了,进入正题. 计算机发展早期能实现两台机器之间的通 ...

  2. session保存用户信息

    前台jsp-------------- <%@ page import="com.manager.form.User" %><%User user = reque ...

  3. 《疯狂Java讲义》(一) ---- 关于学习Java的反思

    "听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...

  4. Reactor模式通俗解释

    Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些.通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或 ...

  5. MacBook Pro/Air 下使用 linux ubuntu 系统 波浪号“~”变成其他 符号 的完美解决办法

    打开终端,输入: sudo su - > /sys/module/hid_apple/parameters/iso_layout sudo su -需要root权限,所以使用前请注意已下载roo ...

  6. java学习第18天(map集合)

    Map集合是将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 存储的是键值对形式的元素,键唯一,值可以重复,有点类似于数据库中的主键加数据.主要功能有: A:添加功能 put ...

  7. $(document).ready()方法和window.onload区别

    事件: javascript 和 HTML之间的交互式通过用户和浏览器操作页面时引发的事件来处理的.当文档或者它的某些元素发生某些变化和操作时,浏览器会自动生成一个事件:例如:当用户单击某个按钮时,也 ...

  8. Google V8编程详解(二)HelloWorld

    转自http://blog.csdn.net/feiyinzilgd/article/details/8248448 上一章讲到了V8的编译和安装,这一章开始从一个demo着手. 这里选用了官方文档的 ...

  9. Office 365 系列三 ------ 创建Office 365普通账号

    当我们购买或者试用Office 365的时候,微软或者世纪互联会发一封邮件给我们,里面就只有管理员的账号,那么作为我们IT 管理员应该给员工创建账号, 创建的过程如下: 一.登陆: http://po ...

  10. Sublime Text 3 汉化小技巧

    Sublime Text 3 简体中文汉化包使用方法 1.将下载的sublime_text3汉化包文件解压,得到的Default.sublime-package 文件.打开sublime text 3 ...