美文网首页
1.2 网络请求-异步请求

1.2 网络请求-异步请求

作者: 草根小强 | 来源:发表于2019-04-17 15:51 被阅读0次

    网络请求-异步请求

    //Q:在实际应用中,用户的信息,并不是保存在某一个设备上,如果还按照我们之前处理数据块的方式,只保存到沙盒(SandBox)中,会导致这个信息,只有在这个设备上才能访问。
     //A:基本上所有的应用程序,都会把数据保存到云端,服务器端,在数据库中做存储。
    
     //常用的数据库:SQL Server,mySql,Orical
    
    //Q:怎么在客户端去获取服务器端的数据
    //A: HTTP请求
     //分为两步:
      //1、向服务器端发一个数据,请求(Request);
      //2、服务器返回一个 响应(Response);
       //Requst 请求,分为请求头和请求体。
       //Resonse 响应,分为响应头和响应体
       //HTTP 是一个协议(被动的,只能是我们发请求,他给我们响应)
       //HTTP 是一个超文本传输协议
    
    //数据请求:
     //方式:通过接口的方式
     //http://www.baidu.com
    
    // 协议:(不写协议头默认是http://)
    
    //接口格式:
    // 协议://主机(host):端口/路径(要访问的文件的路径) ? 键值对参数 key=value&key=vakule...
    
    //注意:接口里面不能有中文!!!接口里面不能有个空格!!!
    
    //例子
    //需求:在www.baidu.com这个主机上,有一个叫做userinfo.php这个文件,地址是login/login2/userinfo.php 访问这个文件:http://www.baidu.com/login/login2/userinfo.php
    //www.baidu.com 主机上有一个叫做login.php这样的文件,路径是login/login.php,我们需要传两个参数 分别是username 和 password 端口是8088
      //http://www.baidu.com:8088/login/login.php?username=zhangsan&&password=123456
    
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        [self aboutNSURLConnection];
    }
    
    #pragma mark ----------异步请求的协议方法-------------
    
    // 服务器端告诉客户端,数据查询的结果
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
        
        //在这里,这个response 是可以转换成
        NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
        
        //状态代码
        if (res.statusCode==200) {
            //正确的,成功的返回
            //开始拼接数据前,把原来的内容清空了
            [_allData setLength:0];
            
        }else if (res.statusCode ==404) {
            //文件不存在
            
            
        }
    }
    
    //如果上面的statusCode 是一个成功的 200,接收数据
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
        //这个方法,会被执行N多次,取决于数据的大小。
        //在这个方法里,我们要做的就是数据的拼接的
        
        //数据拼接之前,需要清空原来的内容
        
        //data表示要拼接的数据
        [_allData appendData:data];
        
        
    }
    
    //数据加载完成(被执行一次)
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
        NSLog(@"数据加载完成");
        
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:_allData options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"%@",dict);
    }
    
    //数据请求失败
    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
        NSLog(@"数据请求失败");
    }
    

    相关文章

      网友评论

          本文标题:1.2 网络请求-异步请求

          本文链接:https://www.haomeiwen.com/subject/ysynwqtx.html