iOS学习笔记12-网络(一)NSURLConnection

本文详细介绍了iOS网络编程中的NSURLConnection,包括GET、POST请求,以及利用NSURLConnection进行文件分段下载和上传的原理与实践。通过代理方法和简化方法实现网络请求,讲解了如何设置请求头和请求体,以及文件大小的获取。
摘要由CSDN通过智能技术生成

一、网络请求

在网络开发中,需要了解一些常用的请求方法:
  • GET请求:get是获取数据的意思,数据以明文在URL中传递,受限于URL长度,所以传输数据量比较小。
  • POST请求:post是向服务器提交数据的意思,提交的数据以实际内容形式存放到消息头中进行传递,无法在浏览器url中查看到,大小没有限制。
  • HEAD请求:请求头信息,并不返回请求数据体,而只返回请求头信息,常用用于在文件下载中取得文件大小、类型等信息。

Web请求

二、NSURLConnection

NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代。目前使用最广泛的第三方网络框架AFNetworking最新版本已弃用了NSURLConnection,那我们学习它还有什么用呢?
* 首先,苹果弃用它还是需要时间的,最起码到iOS10之后。
* 现在还有一些老项目会使用NSURLConnection,特别是2013年之前的项目,用户量基础还是很大的;
* 另外,不得不承认,有些公司还在用类似ASI这些经典的网络框架,所以还是很有必要学习NSURLConnection的。

让我们来首先了解几个类:

1. NSURL:请求地址,定义一个网络资源路径
NSURL *url = [NSURL URLWithString:@"协议://主机地址/路径?参数&参数"];
解释如下:
  • 协议:不同的协议,代表着不同的资源查找方式、资源传输方式,比如常用的httpftp
  • 主机地址:存放资源的主机的IP地址(域名)
  • 路径:资源在主机中的具体位置
  • 参数:参数可有可无,也可以多个。如果带参数的话,用“?”号后面接参数,多个参数的话之间用&隔开
2.NSURLRequest:请求,根据前面的NSURL建立一个请求
NSURLRequest *request = [NSURLRequest requestWithURL:url 
                                         cachePolicy:NSURLRequestUseProtocolCachePolicy 
                                     timeoutInterval:15.0];
参数解释如下:
  • url:资源路径
  • cachePolicy:缓存策略(无论使用哪种缓存策略,都会在本地缓存数据),类型为枚举类型,取值如下:
NSURLRequestUseProtocolCachePolicy = 0 //默认的缓存策略,使用协议的缓存策略
NSURLRequestReloadIgnoringLocalCacheData = 1 //每次都从网络加载
NSURLRequestReturnCacheDataElseLoad = 2 //返回缓存否则加载,很少使用
NSURLRequestReturnCacheDataDontLoad = 3 //只返回缓存,没有也不加载,很少使用
  • timeoutInterval:超时时长,默认60s
另外,还可以设置其它一些信息,比如请求头,请求体等等,如下:
NSMutableURLRequest *request = 
          [NSMutableURLRequest requestWithURL:url 
                                  cachePolicy:NSURLRequestUseProtocolCachePolicy 
                              timeoutInterval:15.0];
// 告诉服务器数据为json类型
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
// 设置请求体body(json类型的数据)
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:@{@"userid":@"123456"} 
                                                   options:NSJSONWritingPrettyPrinted 
                                                     error:nil];
request.HTTPBody = jsonData; 

注意,上面的request是NSMutableURLRequest,即可变类型

3.NSURLResponse:请求结果响应,连接成功后服务器会返回的响应
  • 该类不用我们创建࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值