一、认识HTTP前需要认识: 1、什么是URL URL全程是Uniform Resource Locator (统一资源路径)。 通过一个URL可以找到互联网唯一的1个资源。 格式:协议://主机地址/路径 http://www.jianshu.com/writer#/notebooks/1365988/notes
2、这里说到协议,那么什么是协议?
(1) 协议:不同的协议,代表着不同的资源查找方式,资源传输方式
(2) 主机地址:存放资源主机(服务器)的IP地址(域名)
(3) 路径: 资源在主机(服务器)中的具体位置
2.1、 列举一些常见的协议:
HTTP(超文本传输协议,访问的是远程网络资源,格式http://)
file (访问的是本地计算机的资源,格式file://不需要加主机地址)
mailto (访问的是电子邮件地址,格式是mailto:)
FTP (访问的是共享主机的文件资源,格式是ftp://)
二、我们这里主要介绍------HTTP协议 1、HTTP介绍: 全称:Hypertext Transfer Protocol---超文本传输协议 特性:Http构建与TCP/IP协议之上,默认端口是80,Http是无连接无状态的。 通信过程: 请求+响应 (索要数据,返回相应的数据才是完整的通信过程) 交互方式:1、GET (查) 2、POST(改) 3、PUT(增) 4、DELETE (删) ps:1.1协议中定义了8种发送HTTP请求方法,常用就上述四种,get与Post 都可以做到增删改查
优点:1、由于HTTP服务器程序规模小,通信速度快,允许各种各样的数据。
2、HTTP0.9和1.0使用非持续行连接:每次连接只处理一个请求,服务器
对客户端的请求作出相应后,立即断开连接,节省了传输时间。
1.1、GET请求:
在请求URL后面以?号形式跟上发送服务器的参数,多个参数之间用&隔开
http://www.suny.com/login?username=123&pwd=456&type=JSON
一般参数不可以超过1KB,原因是因为浏览器和服务器对URL长度有限制
1.2、POST请求:
发送服务器的参数全部放在请求体中,理论数据量无限制
1.3、两者优缺点:
大量数据:(文件上传,post请求)
安全性: 包含机密信息建议用post
使用目的: 如果只是索取数据,使用get, 增加、修改、删除数据,使用post
2、由于笔者从事iOS开发,所以介绍iOS开发http请求
苹果自带:
NSURLConnection: 古老,用法简单,但是不好用(几乎不用)
NSURLSession:比上面强,iOS7开始出的,记得是13年
CFNetwork:NSURL*的底层,纯C语言
第三方框架:
ASIHttpRequest:"HTTP终结者",但是已挂,不更新,如今错误也多
AFNetWorking:小编使用,简单易用。(一般根据需求进行封装)
MKNetworkKit:这个其实我没用过,印度黑出,不推荐。
从开发效率上,推荐第三方,个别强人自己搞
3、HTTP 请求 --完整的Http请求包含以下内容
(1)请求头:对客户端描述、客户端请求信息等
GET:/sun.mp4 HTTP/1.1 // 包含请求方法,请求资源路径、Http协议版本
Accept: text/html, // 客户端所能接收的数据类型
Accept-Language:zh-cm // 客户端的语言环境
Host:192.168.101.10 // 客户端想访问主机地址
Accept-Encoding :gzip // 客户端支持的解压数据
User-Agent:Mozilla/6.0 // 客户端类型,软件环境
(2)请求体:----POST请求才会有
客户端发个服务器的具体数据,比如文件数据
4、HTTP 响应---HTTP响应也由3个部分构成,分别是:
(1)状态行
(2)响应头(Response Header)
(3)响应正文
200 OK 客户端请求成功
302 Moved Temporarily 请求重定向
304 Not Modified 文件未修改,可以直接使用缓存的文件。
400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。
401 Unauthonzed
请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响
应正文中给出不提供服务的原因
404 Not Found 请求的资源不存在,例如,输入了错误的URL
500 Internal Server Error
服务器发生不可预期的错误,导致无法完成客户端的请求。
503 Service Unavailable
服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。 HTTP响应的例子: HTTP/1.1 200 OK // 包含HTTP协议版本、状态码、状态英文名称 Server:Apache Tomcat/10.10.0 // 服务器类型 Content-Type : sun.mp4 // 返回数据类型 Date:Mon,6Oct2015 15:25:02 GMT // 相应时间 Content-Length:108 // 返回数据的长度 <html>...