分享

网络(1)-网络基础

 久辰堡 2015-07-15

网络:

1.互联网:通过传输介质将多台设备连在一起的虚拟网络 我们称其为互联网获取internet网。

      (1)传统互联网
                       C/S  client/server 客户端/服务器端
                         B/S  browser/server 浏览器端/服务器端 3ties          
      (2)移动互联网

           APP

2.传输介质:光纤、双绞线、同轴线

3.多台设备之间相互通信:必须遵守协议

      超文本传输协议、TCP/IP协议、新闻组协议、本地文件上传协议、远程操控协议...

    网络中的协议:ISO/OSI 国际标准化组织.

    将网络分为7层或者5层:

    /*

     应用层         http协议

     表示层

     会话层---------统称为高层(计算机语言与人类自然语言的相互转换)

     

     网络层         TCPUDP协议

     传输层         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;

}



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多