网络: 1.互联网:通过传输介质将多台设备连在一起的虚拟网络 我们称其为互联网获取internet网。 (1)传统互联网 C/S client/server 客户端/服务器端 B/S browser/server 浏览器端/服务器端 3ties (2)移动互联网
APP 2.传输介质:光纤、双绞线、同轴线 3.多台设备之间相互通信:必须遵守协议
超文本传输协议、TCP/IP协议、新闻组协议、本地文件上传协议、远程操控协议... 网络中的协议:ISO/OSI 国际标准化组织. 将网络分为7层或者5层: /* 应用层 http协议 表示层 会话层---------统称为高层(计算机语言与人类自然语言的相互转换)
网络层 TCP、UDP协议 传输层 IP协议 数据链路层 物理层---------统称为底层(将计算机语言转化成光电信号) */ //TCP:数据点对点传输 这种传输方式比较安全 不会出现丢包的现象 QQ文件传输 //UDP:数据是店对面的传输 这种传输方式比较快 但是不安全容易出现丢包的现象 只管 发送不管是否接收完全 短信群发 4.数据请求接口的样式:GET请求:非常简单 但是这种数据请求比较不安全, 会让请求数据的一部分信息裸露在接口位置 POST请求:这种请求方式请求数据比较安全 请求的信息隐藏 接口位置只显示请求头没有请求体 5.请求数据的方式分为两种: 同步 ,异步 /*
1、系统提供的数据请求类NSURLConnection 2、使用第三方库进行数据请求ASIHTTPRequest 3、使用第三方库进行数据请求AFNetWorking */ ********************************************************************************************************* 实例: 在RootViewController.m(继承UIViewController)文件中 (1)遵守UITableViewDataSource,UITableViewDelegate协议 (2)创建全局变量: {
NSMutableArray * dataSource; UITableView * table; } (3)在viewDidLoad中 //创建数据源
dataSource = [[NSMutableArray alloc]init]; //创建表格视图 table = [[UITableView alloc]initWithFrame:CGRectMake(0, 64, 320, 480 - 64) style:UITableViewStylePlain]; table.delegate = self; table.dataSource = self; [self.view addSubview:table]; //关闭自动设置tabel显示位置的属性 self.automaticallyAdjustsScrollViewInsets = NO; //在导航条上添加标题和按钮 self.navigationItem.title = @"GET方式请求数据"; UIBarButtonItem * item = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pressBarBtn:)]; self.navigationItem.rightBarButtonItem = item; (4)导航条按钮响应方法: -(void)pressBarBtn:(id)sender { //<1>将字符串网址转化成NSURL NSURL * url = [NSURL URLWithString:PATH];//PATH 自定义的宏代表一个get类型的接口 //<2>转化成NSData NSData * data = [NSData dataWithContentsOfURL:url]; //[注意]上面的方法解析数据 是直接解析网络上的数据 我们称这种形式为同步请求 //同步请求的弊端:同一个界面存在多个请求对象 向服务器请求数据 同步请求就会出现这样的结果 服务器将多个请求对象放在一起 直到所有请求对象都将数据请求完成 才将请求对象反馈给UI 这样用户体验非常差 //而且同步请求数据也会阻止UI主线程的工作 可能导致UI也要等到所有数据请求结束才显示 //真正开发中我们使用的数据请求都是异步请求数据 //<3>进行json解析 NSDictionary * dicContents = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; //<4>获取所有用户信息 NSArray * users = [dicContents objectForKey:@"users"]; //<5>将解析的数据放在数据源里 [dataSource addObjectsFromArray:users]; //<6>刷新表格 [table reloadData]; } (5)实现表格协议方法: -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [dataSource count]; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString * string = @"string"; UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:string]; if(cell == nil) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:string]; } cell.textLabel.text = [[dataSource objectAtIndex:indexPath.row] objectForKey:@"username"]; return cell; } |
|