zoukankan      html  css  js  c++  java
  • 网络数据请求-方法/思想总结

    1.  网络数据请求-封装请求

      调用的开发者

       1.创建这个网络对象(httpRequest)

         2.在该ViewController类里遵循协议

         3.实现协议中的方法

       封装的开发者

       1.根据NSURLConnection异步的方法进行封装, 创建url对象,保留delegate 最后发送异步请求

       2.让封装的类遵循协议(NSURLConnectionDataDelegate)

       3.让封装的类(QDLHttpRequest)去实现该协议中的方法(4个)

    2.  数据请求方法

         NSURLConnection 系统自带的 常用的网络请求方式

         NSURLSession 系统自带的 iOS7.0之后出现的,它使用了block ,所以提高了开发效率

         AFNetworking 第三方的目前很多公司经常使用第三方,内部集成了NSURLConnection和NSURLSession 环境是ARC, 也使用block 提高了开发效率,

      并且不用系统库支持

         ASIHttpRequest 第三方 原来经常使用的数据请求库 缺点就是:环境需要MRC, 并且没有使用block,需要进行ARC和MRC之间的转换(混编)

      优点:ASI这个第三方库已经没有开发维护,比较成熟,比较稳定,很多开发者对ASI进行了一次block网络层封装后再调用使用

    3. Get请求和Post请求

         1. 一般get是从服务器上获取数据,post是向服务器传送数据

         2. get请求是把参数列表加到提交表单中的ACTION属性中,值和表单内容各个字段一一对应,在我们的URL中可以看到。post请求是通过HTTP post机制,    将表单的各个字段和其他的内容设置到Html Header 里一起传送到ACTION属性指定的URL地址。(说白了用户无法看到此过程)

         3. 对应的get方式,传送的数据比较小,不能大于2KB post方式传送的数据比较大,一般被默认为不受限制,但是理论上,IIS4中最大的数据量为80KB

      II5最大的数据量为100KB

         4. get安全性非常低,post安全性非常高。但是执行效率get比post要好

         建议:

         get方式安全性比post差,所以建议用post方式提交数据

         在做数据查询的时候,建议用get方式,而在做数据的添加、修改或删除的时候,建议用post方式

    4. KVO :key Value Obeserve 观察对象的属性,如果属性值发生了变化 会根据变化响应不同的方法    键值观察者

    5.   设置网络监测状态改变

        [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

            /*

             AFNetworkReachabilityStatusUnknown          = -1,  未知网络

             AFNetworkReachabilityStatusNotReachable     = 0,   无网络

             AFNetworkReachabilityStatusReachableViaWWAN = 1,   运营商网络 如2G 3G 4G 5G

             AFNetworkReachabilityStatusReachableViaWiFi = 2,   WiFi网络

             */

            switch (status) {

                case AFNetworkReachabilityStatusUnknown:

                {

                    NSLog(@"未知网络");

                }

                    break;

                case AFNetworkReachabilityStatusNotReachable:

                {

                    NSLog(@"无网络");

                }

                    break;

                case AFNetworkReachabilityStatusReachableViaWiFi:

                {

                    NSLog(@"wifi网络");

                }

                    break;

                case AFNetworkReachabilityStatusReachableViaWWAN:

                {

                    NSLog(@"运营商网络");

                }

                    break;

                default:

                    break;

            }

        }];

  • 相关阅读:
    nginx:font-awesome图标刷新后显示不了
    nginx:用openssl生成证书
    安全:http host头攻击漏洞
    js:获得屏幕的宽高
    java中URLEncode与Delphi中关系
    Error during WebSocket handshake: Unexpected response code: 404
    byte数组与MultipartFile相互转化
    Java字符串或数组去掉前后的中括号标签
    IDEA运行新项目时报 Error running ‘XXApplication‘: Command line is too long. Shorten command line for…… 错误
    (转)ElasticSearch中"distinct","count"和"group by"的实现
  • 原文地址:https://www.cnblogs.com/GJ-ios/p/5433623.html
Copyright © 2011-2022 走看看