/** 目的:从网络服务器加载数据,能够保证应用程序内部的内容,常换常新,及时更新! 网络传输的数据格式: * 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. 文档开始 ======================================== 2\3\4循环执行,直到解析文档结束 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]; // ================================================================== // 下载进程通过代理方法控制 // 一共有三个代理方法