网络解析的目的是从网络服务器加载数据,能够保证应用程序内部的内容,常换常新,及时更新!
网络传输的数据格式为: JSON、字典、数组三种方式。
格式解析:
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];
2.解析步骤
1. 文档开始
2. 开始节点
3. 发现节点内容
4. 完成节点
注意:2\3\4循环执行,直到解析文档结束
5. 文档完成
6. 出错
网络访问常用方法 : GET & POST
GET
优点:直接拿数据,会在URL中拼接参数,效率高,安全性高
作用:直接获取网络数据
POST
特点:将数据体提交给服务器,然后再获取到结果,效率略低,安全性不好
用途:实现用户登录,上传文件。
关于用户注册登录部分的处理的提示:用户的真实密码,尽在注册或登录时有效,除此之外,都应该使用加密后的密码传递。MD5“加盐!”
网络访问步骤
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];
原文:http://www.cnblogs.com/swcheng/p/3650807.html