1、简介
1.1 几乎所有的应用都用到网络,依靠才能实现实时的数据交换和更新
1.2 移动互联时代,移动应用如果没有数据的更新就如一潭死水,毫无生气
1.3 网络开发是开发优秀应用的前提和基础
2、概念
2.1 客户端、服务器
客户端:手机上安装的应用软件,比如手机QQ、手机淘宝等
服务器:为客户端提供服务和数据的机器,服务器也是程序
2.2 请求、响应
请求:客户端向服务器索取数据的一种行为
响应:服务器对客户端的请求作出的响应,最常见的响应就是返回数据给客户端
3、URL
3.1 URL,Uniform Resource Locator,统一资源定位符
3.2 URL就是资源在互联网上的地址、位置,每一个URL对应互联网上唯一的资源
3.3 基本格式:协议://主机地址/路径
协议:资源的查找传输方式,协议不同查找传输方式不同
主机地址:存放资源的主机的IP地址
路径:资源在主机中的具体位置
4、HTTP协议
4.1 多种协议
HTTP,HyperText Transfer Protocol,超文本传输协议
其他协议:FTP(访问共享主机文件资源)、file(访问本地主机资源)、mailto(访问电子邮件地址)
4.2 HTTP协议的作用
4.2.1 规定了客户端和服务器之间的数据传输格式
4.2.2 让客户端和服务器之间有效的数据传输
4.3 特点
简单:服务器程序规模小,通信快
灵活:允许传输任意类型的数据
非持续连接:每次处理一个请求,响应后马上断开
4.4 通信过程
第一步:请求,即客户端向服务器发送请求,索要数据
第二步:响应,即服务器返回数据给客户端
5、iOS中常用的HTTP请求方案
苹果原生的方案(偶尔使用)
NSURLConnection:使用简单,但是慢慢被遗弃
NSURLSession:功能比NSURLConnection强大
CFNetwork:纯C语言框架,NSURL的底层
使用第三方框架(经常使用)
ASIHttpRequest:非常强大,早已停止更新,多见于老项目中
AFNetworking:简单易用,维护者较多,提供了最基本的功能
6、HTTP请求方法
6.1 HTTP协议中提供了8中请求方法,对应不同的操作资源方式
GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH
6.2 GET、POST是最常用的协议
6.3 GET、POST比较
1.URL
GET请求的参数拼接在URL后面,因为URL长度有限制,所以GET请求的长度有限制
POST:参数放在请求体中,不能直接从URL上看出
2.安全性
POST比GET安全,因为参数不可见
3.数据传递量
大量数据使用GET
7、HTTP请求、响应详解
请求
一个完整的HTTP请求 = 请求行 + 请求头 + 请求体
1.请求行
包含请求方法、请求的资源路径、HTTP协议版本
2.请求头
包含对客户端环境的描述、客户端请求的主机地址等
3.请求体
客户端发给服务器的具体数据
响应
一个完整的HTTP响应 = 状态行 + 响应头 + 响应体
1.状态行
包含HTTP协议版本、状态码、状态的英文名称,如下
HTTP/1.1 200 OK
常见状态码
200 OK 请求成功
305 使用代理才能访问资源
400 Bad Request 请求语法错误,服务器无法解析
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误,无法完成请求
状态码归类
2xx
200 请求完成
201 紧接POST命令
202 处理尚未完成
203 返回部分信息
204 无响应,已接收请求,但不存在需要回送的信息
3xx 重定向问题
301 请求的数据已更改位置,并且是永久性的更改
302 请求的数据临时拒用不同的URI
303 参阅其他,可在另一个URI下找到对应请求的响应
304 使用代理才能访问资源
4xx 客户端问题
400 请求中的语法有问题
401 未授权
402 需要付款
403 禁止访问
404 找不到
407 代理认证请求
5xx 服务器的错误
500 内部错误
501 服务器不支持请求工具
502 服务器收到上游服务器的无效响应
503 无法获得服务
2.响应头
服务器的描述、返回的数据的描述,如下
Server:Apache-Coyote/1.1
Content-Type:image
Content-Length:9527
Date:Tue, 23 Aug 2016 12:10:15 GTM
3.实体内容
服务器返回给客户端的具体数据