UI(二十八)网络编程
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 有缓存就用缓存 没有缓存就不发请求 当做请求出错处理(用于离线模式)