IOS9网络编程的重大改变:
(1)NSURLConnection:IOS9之前使用之后弃用
NSURLSession:IOS7.0之后出来IOS9只能使用这个类
(2)后台服务器传输协议由HTTP改成HTTPS。
IOS9之后需要添加下面的东西
IOS开发->info.plist->App
Transpart Security Settings->Allow Arbitrary Loads ->YES
一、URL
1、概念:
Uniform Resource Locator 统一资源定位符
2、结构
URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名
https://www.baidu.com/img/bd_logo1.png
可以通过URL找到服务器中的文件
注意:URL里面不要出现中文字符不支持->需要转码
二、HTTP
1、全称:Hypertext Transfer Protocol超文本传输协议
HTTPS (全称:Hyper Text Transfer Protocol over Secure Socket
Layer)是以安全为目标的HTTP通道,简单讲是HTTP的安全版
2、通讯流程:
首先客户端发送一个请求(request)给服务器,服务器在接收到这个请求后将生成一个响应(response)返回给客户端
*发送一个请求没有任何回应
(1)没联网
(2)请求内容错误URL
*发送一个请求有回应但是没能得到请求的内容
(1)服务器需要的内容与发送请求的内容不匹配一般在回应中有错误码
(2)服务器需要的内容与发送请求的时候未发送
(3)后台服务器代码的问题
一般在回应中有错误码:code:xxx
(300-3007表示的意思是:要完成请求,您需要进一步进行操作。通常,这些状态代码是永远重定向的。
300(多种选择)服务器根据请求可执行多种操作。服务器可根据请求者来选择一项操作,或提供操作列表供其选择)
*常用的请求方法:
(1)get数据写在URL后面
(2)post写在请求体里面post传递的数据量没有限制(具体还得看服务器的处理能力)
三、request
1、概念:一个URL加载的请求NSURLRequest
当需要请求头的时候需使用可变的request即NSMutableURLRequest添加表头
2、在请求中需要的两个基本元素
(1)要加载的URL
(2)加载的方式(默认的是get)
3、两类请求方法
(1)不考虑缓存策略
1)+ (instancetype)requestWithURL:(NSURL *)URL;
2)- (instancetype)initWithURL:(NSURL *)URL
(2)考虑缓存策略超时限制
1)+ (instancetype)requestWithURL:(NSURL *)URL
cachePolicy:(NSURLRequestCachePolicy)cachePolicy
timeoutInterval:(NSTimeInterval)timeoutInterval
2)- (instancetype)initWithURL:(NSURL *)URL
cachePolicy:(NSURLRequestCachePolicy)cachePolicy
timeoutInterval:(NSTimeInterval)timeoutInterval
*cachePolicy缓存方式
*timeoutInterval超时的时间间隔s
3) NSURLRequestUseProtocolCachePolicy,默认的缓存策略如果缓存不存在直接从服务端获取如果缓存存在会根据response中的Cache-Control字段判断下一步操作
NSURLRequestReloadIgnoringCacheData忽略缓存重新请求
NSURLRequestReturnCacheDataElseLoad有缓存就使用不管其有效性没有缓存就重新请求
NSURLRequestReturnCacheDataDontLoad有缓存就用缓存没有缓存就不发请求当做请求出错处理(用于离线模式)
四、网络环境判断
1、Reachability类名
(1)导入Reachability类名
(2)初始化Reachability对象,HostName尽量用一个比较稳定的网络
(3)添加观察者,接收网络环境发生改变的通知
(4)开始监测
(5)在通知中得到Reachability的对象
2、AFNetWorking中AFNetworkReachabilityManager
(1)导入类库
(2)创建检测对象类方法sharedManager
(3)开始监测
(4)通过检测对象获得检测结果回调方法(setReachabilityStatusChangeBlock:)