AFN 整理笔记~~~

来源:互联网 发布:python \ 编辑:程序博客网 时间:2024/05/13 06:43


花了很长时间整理的,希望对大家有帮助:

1. AFN——[[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES];
一旦有网络访问,自动显示小转轮!显示网络连接状态

cmd + shift + j ====可以展开跳转到的文件目录

NSURLConnection;iOS5 支持取消暂停,断点续传,进度,使用多线程运行
NSURLSession ;  iOS7 提供了后台任务,取消暂停,对了管理,进度跟进,
AFN  : 封装上面的2个,,提供错误处理,网络监测,身份验证,

2. AFN 常规代码
  2.1 AFNHTTPRequireOperationManager 是对 NSURlConnection(iOS5推出)的封装——可以设置请求(二进制)、相应的数据格式(默认json);
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
     通过实例化 manager 对象直接调用 get 、 post 方法执行下载。
    
请求方式——get 参数都显示在url路径中
      post 通过请求体发送请求。
      head 只包含上传数据的一些信息,(大小、格式)
      put 上传文件
      patch
  请求数据格式——默认是二进制
        json 、 plist
响应数据格式—默认json;解析AFJSONResponseSerializer
        XML:-(dom一般用于Mac上,耗费资源大  sax 解析)
        plist

   2.2 AFNHTTPSessionManager是对 NSURlSession(iOS7 推出)的封装———-单例!统一管理所有的网络请求。。。。。。。。。。。
提供了半自动的序列化 反序列化—————状态码: 200 表示数据格式content-type不正确
提供比较完善的错误处理,网络检测,身份验证HTTPs
    post 上传
    put
    步骤:建立单利
         指定BaseUrl ——put + 身份验证
         进度跟进—-NSProcess + KVO监听
         错误处理
         
3.AFN 标准写法
    指定url        
    建立请求
    指定请求方式
    (身份验证)
    利用单例执行下载—
[[NetworkTools sharedNetworkTools] GET:@"demo.json" parameters:nil finished:^
    
    利用单例执行上传—
[[[NetworkTools sharedNetworkTools] uploadTaskWithRequest:request fromFile:fileURL progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {

    [process addobserver ] 调用 KVO 监听方法 进度跟进———
    dealloc——移除监听
    



3.ASI———-全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大。
ASI的实现基于底层的CFNetwork框架,因此运行效率很高。可惜作者早已停止更新,有一些潜在的BUG无人去解决 而且是基于MRC的...需要配置兼容ARC—[-info-objc-arc]
ASI的github地址?


4.如何让学习第三方框架
    git 下载更新,获取框架
    阅读官方文档
    查看事例程序,编写示例代码
    请教谷歌 + 大神博客
    在 stackoverflow网站上查看
       

4.默认的网络请求超时时长 ASI 是10秒  
苹果官方是60秒
SDWebImage是15秒
AFN是60秒


5.HTTP:通信协议
TCP/IP协议集包括应用层,传输层,网络层,网络访问层。
TCP(Transmission Control Protocol,传输控制协议)需要建立连接  20个字节 对系统要求高
UDP(User Data Protocol,用户数据报协议)不要建立连接,(不可靠可能会丢包)不关注是否能够接收. 8个字节
TCP三次握手过程
1> 请求

* 客户端 --> 服务器

* 请求的内容

a. 请求行(请求方法\HTTP协议\请求资源路径)

b. 请求头(描述客户端的信息)

c. 请求体(POST请求才需要有, 存放具体数据)


2> 响应

* 服务器 --> 客户端

* 响应的内容

a. 状态行(响应行, 状态码)

b. 响应头(服务器信息, 返回数据的类型, 返回数据的长度)

c. 实体内容(响应体, 返回给客户端的具体内容)


3.HTTP请求的方法

1> GET

* 参数都拼接在URL后面

* 参数有限制


2> POST

* 参数都在请求体

* 参数没有限制


0 0
原创粉丝点击