NSURL NSURLRequest NSURLConnection 数据请求

 //创建属性 

 NSMutableArray *_dataArray;

 //可变的字节缓冲区,用于从服务器接收数据

 NSMutableData *_downloadData;

 //苹果自带的用于客户端与服务端进行连接交互的类

 NSURLConnection *_urlConnection;




 //数据请求

 NSString *str = [NSString stringWithFormat:@"http://地址"];

 NSURL *url = [NSURL URLWithString:str];

 //根据url,生成一个请求对象

 NSURLRequest *request = [NSURLRequest requestWithURL:url];

 //利用请求对象,创建一个NSURLConnection 对象,connection对象会在客户端与服务端之间建立一个连接,并将request由客户端发到服务端

 //遵循http协议,发起的是异步的请求

 //异步:主线程负责数据的初始化,视图的初始化和界面的展示等,NSURLConnection进行数据请求的时候,会在主线程之外,单独开辟一个线程进行与服务器的交互,和接收服务器数据等耗时的操作,当数据接收完毕后,会通过connectionDidFinishLoading自动回到主线程。我们可以在主线程进行后续的数据解析和视图刷新的操作

 _urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];



//代理方法

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{

    //遵循的是http协议,服务端的响应,实际为 NSHTTPURLResponse

    NSHTTPURLResponse *http = (NSHTTPURLResponse *)response;

    //服务端响应给客户端的状态码

    //200 响应成功,404 请求资源没有找到,400 客户端请求的语法错误,500 服务器错误

    NSLog(@"code:%d",[http statusCode]);

    //清空里面的旧数据

    [_downloadData setLength:0];

}


//当客户端收到服务端根据request传递过来的数据时(接收数据的过程 ),调用此方法

//可能被调用多次

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{

    [_downloadData appendData:data];

}

//客户端接收数据完毕后,调用此方法

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{

    if (_downloadData) {

        //

        id result = [NSJSONSerialization JSONObjectWithData:_downloadData options:NSJSONReadingMutableContainers error:nil];

        if ([result isKindOfClass:[NSDictionary class]]) {

          

        }

        //数据源改变了,执行tableView的刷新方法

    }

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值