iOS开发之小文件
来源:互联网 发布:kmp算法next计算例题 编辑:程序博客网 时间:2024/06/05 18:41
如果文件比较小,下载方式会比较多
1》直接用NSData的+(id)dataWithContentsOfURL:(NSURL*)url;
2》利用NSURLConnection发送一个HTTP请求去下载
3》如果是下载图片,还可以利用SDWebImage框架
**************我是一条分隔线**************
法一、NSData的+(id)dataWithContentsOfURL:(NSURL*)url 是一个耗时操作
法二、NSURLConnection的同步请求也是耗时操作,就不多说了。
NSURLConnection的异步请求block方法有2个弊端:
1》无法监听下载的进度
2》内存会飙升(下载下来的数据会占据内存无法释放)
法三、NSURLConnection的代理方法。代理虽然可以实现监听到下载的进度,但是依然有一个弊端:
1》内存还是会飙升。
所以总结一下就是:NSURLConnection只合适下载小文件2M以内,但是iOS9以后NSURLConnection也被苹果弃用了。如果是大文件下载,建议使用NSURLSession或者第三方框架。
**************我是一条分隔线**************
使用NSURLConnection发送请求的步骤很简单
1》创建一个NSURL对象,设置请求路径
2》传入NSURL创建一个NSURLRequest对象,设置请求头和请求体
3》使用NSURLConnection发送请求
**************我是一条分隔线**************
NSURLConnection常见的发送请求方法有以下几种
同步请求
[NSURLConnection sendSynchronousRequest:<#(nonnull NSURLRequest *)#> returningResponse:<#(NSURLResponse *__autoreleasing _Nullable * _Nullable)#> error:<#(NSError * _Nullable __autoreleasing * _Nullable)#>];
异步请求:根据对服务器返回数据的处理方式的不同,又可以分为2种
block回调
[NSURLConnection sendAsynchronousRequest:<#(nonnull NSURLRequest *)#> queue:<#(nonnull NSOperationQueue *)#> completionHandler:<#^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError)handler#>];
协议代理
+ (NSURLConnection*)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate;- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate;- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately;
NSURLConnectionDataDelegate协议中的代理方法开始接收到服务器的响应时调用- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;接收到服务器返回的数据时调用(服务器返回的数据比较大时会调用多次)- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;服务器返回的数据完全接收完毕后调用- (void)connectionDidFinishLoading:(NSURLConnection *)connection;请求出错时调用(比如请求超时)- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
**************NSMutableURLRequest**************
NSMutableURLRequest是NSURLRequest的子类,常用方法有设置请求超时等待时间(超过这个时间就算超时,请求失败)- (void)setTimeoutInterval:(NSTimeInterval)seconds;设置请求方法(比如GET和POST)- (void)setHTTPMethod:(NSString *)method;设置请求体- (void)setHTTPBody:(NSData *)data;设置请求头- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
创建GET请求NSString *urlStr = [@"http://...?username=123&pwd=123" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSURL *url = [NSURL URLWithString:urlStr];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];创建POST请求NSString *urlStr = @"http://....";NSURL *url = [NSURL URLWithString:urlStr];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];request.HTTPMethod = @"POST";// 请求体NSString *bodyStr = @"username=123&pwd=123";request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
阅读全文
0 0
- iOS开发之小文件
- ios开发总结之文件下载(小文件下载)
- iOS多线程与网络开发之小文件上传
- iOS开发之小知识
- iOS开发之小文件下载、大文件下载、断点下载
- iOS开发之文件管理
- IOS开发之文件上传
- iOS开发之文件下载
- iOS开发之文件上传
- ios开发小技巧之 pch文件的添加以及自定义的LOG
- IOS 之 开发的一些小技巧
- iOS 之开发中的几个小技巧
- iOS开发小项目之找色块游戏
- iOS开发之storyboard的小技巧
- iOS开发之UIApplication的小功能
- IOS开发之小实例--UIImagePickerController
- iOS开发之代码规范小建议
- IOS小知识点11之IOS文件结构、UIApplication
- 递归
- 科大讯飞笔试题目
- idea中maven编译出错问题
- linux下g++链接动态库与静态库相关问题
- JMeter-配置元件-HTTP授权管理器
- iOS开发之小文件
- java 实现BufferedImage和ImageReader两种方式获取图片宽高、判断图片类型、获取图片大小工具类代码以及测试响应结果
- 《淘宝技术这十年》读书笔记
- 使用http请求,中文乱码问题--解决方法
- java中的sleep()和wait()的区别
- 路漫漫其修远兮,吾将上下而求索。
- Jquery笔记
- 关于对dao、domain的思路(一)
- glutInitDisplayMode