//创建属性
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的刷新方法
}
}