iOS开发 - 网络编程之HTTP协议

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.实体内容

服务器返回给客户端的具体数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值