zoukankan      html  css  js  c++  java
  • iOS-网络基础

    /**
     目的:从网络服务器加载数据,能够保证应用程序内部的内容,常换常新,及时更新!
     
     网络传输的数据格式:
        * JSON 
            {} 字典
            [] 数组
            类似于OC中的快速包装数组和字典的方式
        * XML
            以<标记></标记结束>成对出现的
     
     
     格式解析:
     
        ** JSON 的解析
        
        NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
     
        ** XML 解析
     */
    
    // 1. 实例化解析器
    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
    // 2. 代理
    parser.delegate = self;
    // 3. 解析器解析
    [parser parse];
    
    // 解析步骤
    /**
     1. 文档开始
     ========================================
     234循环执行,直到解析文档结束
     2. 开始节点
     3. 发现节点内容
     4. 完成节点
     ========================================
     5. 文档完成
     6. 出错
     */
    
    // 最易用的XML格式
    // 在实际开发中,无论是XML还是JSON都是公司后台程序员提供的
    // 参照网址:http://ebookservice2.oss.aliyuncs.com/upload/xml/hotpaihang-1.xml
    
    <book pages="12" index="1">
    <item id="1558" title="错入豪门:老公别碰我" tag="都市言情" source="/upload/file/2013_07_4/2013718101155179.zip" author="唯一的迷蝶" updatetime="2013-6-21 11:06:17" summary="新婚之夜" clicks="90679" words="" logo="/upload/pic/2013_06_5/20136211172503.png" jx="False"/>
    </book>
    
    
    /**
     =======================================================================
     
     网络访问常用方法
     
     GET & POST
     
     ** GET直接拿数据,会在URL中拼接参数,效率高,安全性高
        直接获取网络数据
     
     ** POST将数据体提交给服务器,然后再获取到结果,效率略低,安全性不好
        用POST,实现用户登录,上传文件
     
     关于用户注册登录部分的处理的提示:
     *  用户的真实密码,尽在注册或登录时有效,除此之外,都应该使用加密后的密码传递。“加盐!”
     
     网络访问步骤
     
     1. NSURL
     2. NSURLRequest
     3. NSURLConnection 同步/异步方法
     */
    
    /**
     =======================================================================
     
     NSURLSession
     
     如果只是简单的获取数据,直接使用NSURLConnection即可
     
     目前实现断点续传功能,做的非常优秀!
     
     NSURLSession 的使用步骤
     1. NSURL
     2. NSURLRequst
     3. NSURLSession
     
        NSURLSession *session = [NSURLSession sharedSession];
     
     4. NSURLSessionTask(DataTask, DownloadTask, UploadTask)
        NSURLSessionDataTask => XML, JSON, HTML
     
     提示:任务建立后,默认都是挂起状态,需要使用resume启动任务。
    */
    
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        
        // 网络数据任务完成的块代码
        NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        
        [_webView loadHTMLString:html baseURL:url];
    }];
    
    // 启动(继续)任务
    [task resume];
    
    // 下载任务的代码
    // 1. URL
    // 注意:在开发网络应用时,为了避免不必要的错误,所有URL的字符串都需要添加百分号
    // 转换之前,提前把文件名弄出来
    NSString *fileName = [urlString lastPathComponent];
    urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:urlString];
    
    // 2. 会话
    // 2.1 会话配置,使用默认配置
    //    NSURLSessionConfiguration *configure = [NSURLSessionConfiguration backgroundSessionConfiguration:@"后台任务的标示符"];
    NSURLSessionConfiguration *configure = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    
    _session = [NSURLSession sessionWithConfiguration:configure delegate:self delegateQueue:queue];
    
    // 3. 下载任务
    // 如果要让代理参与监控下载进度,在实例化下载任务时,不能指定完成后的块代码
    _downloadTask = [_session downloadTaskWithURL:url];
    
    // 4. 启动任务
    [_downloadTask resume];
    
    // ==================================================================
    // 下载进程通过代理方法控制
    // 一共有三个代理方法
  • 相关阅读:
    VPC下访问FTP的问题
    不错的CHM反编译工具chmdecoder
    使用inet进行FTP传输(转)
    SetupFactory安装制作心得
    VB实现半透明或者部分透明窗体
    小说《窃明》
    Basic Conception On SOA
    Ubuntu下JDK7安装全过程并调试第一个带包的java程序
    Ubuntu下vim如何保存退出
    使用NHibernate3.0来构建自己的ORM框架(一)
  • 原文地址:https://www.cnblogs.com/DarbyCJ/p/3745892.html
Copyright © 2011-2022 走看看