1.AFN框架基本结构:

一、AFN框架的2个管理对象

1.AFHTTPRequestOperationManager(是对NSURLConnection的封装)

2.AFHTTPSessionManager (对NSURLSession的封装)

二、AFHTTPRequestOperationManager的具体使用

1.创建管理者

AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];

2.封装请求参数

NSMutableDictionary *params = [NSMutableDictionary dictionary];

params[@"username"] = @"哈哈哈";

params[@"pwd"] = @"123";

3.发送请求(请求成功的时候调用这个success block,请求失败的时候调用调用这个 fail block)

NSString *url = @"http://localhost:8080/MJServer/login";

// POST请求

[mgr POST:url parameters:params

success:^(AFHTTPRequestOperation *operation, id responseObject) {

NSLog(@"请求成功---%@", responseObject);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"请求失败");

}];

// GET请求

[mgr GET:url parameters:params

success:^(AFHTTPRequestOperation *operation, id responseObject) {

NSLog(@"请求成功---%@", responseObject);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"请求失败");

}];

三、对服务器返回数据的解析

1.AFN可以自动对服务器返回的数据进行解析(默认将服务器返回的数据当做JSON来解析)

2.设置对服务器返回数据的解析方式

1> 当做是JSON来解析(默认做法)

* mgr.responseSerializer = [AFJSONResponseSerializer serializer];

* responseObject的类型是NSDictionary或者NSArray

2> 当做是XML来解析

* mgr.responseSerializer = [AFXMLParserResponseSerializer serializer];

* responseObject的类型是NSXMLParser

3> 直接返回data

* 意思是:告诉AFN不要去解析服务器返回的数据,保持原来的data即可

* mgr.responseSerializer = [AFHTTPResponseSerializer serializer];

3.注意

* 服务器返回的数据一定要跟responseSerializer对得上

1> 服务器返回的是JSON数据

* AFJSONResponseSerializer

* AFHTTPResponseSerializer

2> 服务器返回的是XML数据

* AFXMLParserResponseSerializer

* AFHTTPResponseSerializer

3> 服务器返回的是其他数据

* AFHTTPResponseSerializer

四:

利用 AFN 可以实时监听网络状态!

1.AFNetworkReachabilityManager 用来监听网络状态!

AFN 支持 https.需要设置 AFSecurityPolicy 的一些参数!(AFSecurityPolicy)

2.在发送网络请求的时候使用: 设置AFURLRequestSerialization 的属性 AFJSONRequestSerializer,可以自动帮你将OC数据参数                转换成 JSON 参数

AFURLRequestSerialization:参数解析器(将高速服务器的参数序列化成自己想要的格式)

AFURLResponseSerialization: 响应数据解析器! 用来解析服务器返回的数据(JSON/XML/HTML/图片/视频/普通文件)!

3. AFJSONResponseSerializer :JSON 解析器.默认的解析器类型. JSON 已经变成 ---> OC !

4.AFXMLParserResponseSerializer :XML 解析器.如果服务器返回的数据类型是 XML ,需要手动将解析器类型改变             成AFXMLParserResponseSerializer

XML ----> NSXMLParser

5. AFHTTPResponseSerializer :对服务器返回的数据没有做任何处理! 通过这个解析器得到的数据就是 二进制数据!

Data :二进制数据!

6. AFN 错误机制: 如果服务器返回的数据类型和响应解析器的类型不相匹配,就会报错!调用的是 失败的Block回调!

AFN 使用注意: 将解析器的类型和服务器返回的数据类型相匹配!

第三方框架AFN使用相关推荐

  1. 常用的iOS第三方框架

    转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD与To ...

  2. 第三方框架简介ios

    第三方框架简介iOS 图像 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片 ...

  3. Android专题-常用第三方框架

    Android专题-常用第三方框架 HTTP网络请求 带*号的是个人推荐比较好用的 HTTP网络请求 okhttp * :https://github.com/square/okhttp retrof ...

  4. Swift之SDWebImage第三方框架

    在学习Swift过程中,最害怕的使用了OC的第三方框架 好不容易配置成功了,却出现了意外的Bug [UIImageView setImageWithURL:]: unrecognized select ...

  5. React-Native 之 GD (一)目录结构与第三方框架使用与主题框架搭建

    1.APP效果图 2.工程环境配置 IOS: 将压缩包内的 Images.xcassets 文件夹直接替换掉我们iOS工程中的 Images.xcassets 文件夹. 这时候我们可以看到所有图片资源 ...

  6. 小程序第三方框架对比 ( wepy / mpvue / taro )

    众所周知如今市面上端的形态多种多样,手机Web.ReactNative.微信小程序, 支付宝小程序, 快应用等,每一端都是巨大的流量入口,当业务要求同时在不同的端都要求有所表现的时候,针对不同的端去编 ...

  7. cocoapods管理第三方框架

    2019独角兽企业重金招聘Python工程师标准>>> 1. gem sources -l -> *** CURRENT SOURCES *** https://ruby.ta ...

  8. Day2 : iOS第三方框架MBProgressHUD学习笔记

    今天主要学习了MBProgressHUD,受益匪浅.MB实现了弹出提示,可以很快捷的集成到项目中去.不得不说,得益于GitHub上丰富的开源第三方框架,开发工作变得非常的简便,优雅. 1.可以在弹出提 ...

  9. iOS开发之第三方框架Masonry

    2019独角兽企业重金招聘Python工程师标准>>> 第三方框架Masonry 该框架可以大大简化AutoLayout使用过程中对控件添加约束的代码. 框架地址:https://g ...

最新文章

  1. linux文件描述符
  2. 加工中心宏程序生成器_零件行外球面加工,老师傅告诉你,普通程序与宏加工哪个更方便...
  3. 应用在vs的ide调试环境下运行顺利,但是在bin目录直接运行exe报错的问题
  4. iscsi-分区类型
  5. 阿里云何川:开放兼容的云,计算巢帮助合作伙伴云化升级
  6. CSU 1116 Kingdoms
  7. 处理FTP上传成功推理
  8. Linux学习笔记002---Windows下安装CentOS7_带有UI桌面_图解
  9. 【Java企业级开发二】jsp简答题汇总
  10. 天顶角、太阳方位角和太阳高度角辨析
  11. BTA 常问的 Java基础39道常见面试题
  12. np问题 量子计算机,P vs NP与经典与量子计算机可解决的问题相同吗?
  13. python爬虫由浅入深8---基于正则表达式查询的淘宝比价定向爬虫
  14. 如何在Chrome浏览器中导入和导出密码
  15. 常见安防存储估算标准
  16. Https 忽略证书验证
  17. 部署yanagishima纪实
  18. Java:计算圆形和长方形的面积
  19. C++编程题(oj)-首字母变大写
  20. Jquery从入门到精通:二、选择器 1、准备篇 1)基础的基础:DOM模型

热门文章

  1. [转载]amoled屏幕Android手机低亮度闪烁缓解软件
  2. 傅里叶变换--虚部的理解
  3. ionic之样式复选框
  4. 关于Winform中类似股票K线图十字交叉线随着鼠标移动的实现方法!
  5. 2023icpc西安站邀请赛刷题记录
  6. 网站评论功能数据库设计和开发
  7. JAVA动态增加枚举项
  8. lvgl image
  9. 在EXCEL中如何同时冻结行与列?
  10. 【GPS识别】低信噪比环境下GPS信号识别的MATLAB仿真