1.2 网络请求-异步请求

2019-04-17  本文已影响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(@"数据请求失败");
}
上一篇下一篇

猜你喜欢

热点阅读