首页 > 代码库 > iOS网络篇2-http协议通信规则

iOS网络篇2-http协议通信规则

超文本传送协议 (HTTP-Hypertext transfer protocol) 定义了客户端与服务器之间通信的传输规则。目前最新的版本是1.1,HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。

一、特点:

1、支持客户/服务器模式。支持基本认证 和安全认证。
2、 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4、HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象。
5、无状态:HTTP协议是无状态的。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大 。

二、URL

URL的全称是Uniform Resource Locator (统一资源定位符),通过一个URL,能找到互联网唯一的一个资源。
URL的基本格式 = 协议://主机地址(域名)/路径
例如百度图片的URL为:http://image.baidu.com/channel/star
协议:不同的协议代表着不同的资源查找方式,除了本帖介绍的http协议外还有file(本地文件协议)ftp(共享主机文件协议)等
主机:存放资源的主机IP地址或者域名
路径:资源在主机中的具体位置

三、通信过程

请求:客户端向服务器请求资源
响应:服务器返回客户端响应资源

1.请求

1.1请求信息

  ●请求行: 包含了请求方法、请求资源路径、http协议版本
    例GET /images/logo.gif HTTP/1.1,表示get请求,从/images目录下请求logo.gif这个文件,协议版本是1.1。
  ●请求头: 包含了对客户端的相关描述
    Host://客户端想访问的服务器主机地址
    User-Agent://客户端的软件环境
    Accept://客户端所能接受的数据类型
    Accept-Language://客户端的语言环境
    Accept_Encoding://客户端支持的数据压缩格式
  ●请求体(可选的消息体)
    客户端向服务器发送的具体数据,在HTTP/1.1协议中,所有的请求方法中除post外,都是可选的。

1.2请求方法

HTTP/1.1协议中共定义了八种方法来表明请求资源的不同操作方式:

  OPTIONS - 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送‘*‘的请求来测试服务器的功能性。
  HEAD - 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
  GET - 向特定的资源发出请求。
  POST - 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  PUT - 向指定资源位置上传其最新内容。
  DELETE - 请求服务器删除Request-URI所标识的资源。
  TRACE - 回显服务器收到的请求,主要用于测试或诊断。
  CONNECT - HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  PATCH - 用来将局部修改应用于某一资源。
基本上只需了解GET、POST、HEAD请求就足以满足我们在iOS开发中所有需求,其他方法基本用不上也不可能让你实现,比如DELETE和PUT是对人家服务器进行数据操作,你肯定没有这个权限。

2.响应

2.1响应信息

  ●状态行: 客户端向服务器发送一个请求,服务器以一个状态行作为响应,包括http协议版本,状态码,状态英文名称

  HTTP/1.1 200 OK

     //常见状态码有200 400 404 500等

  200 OK :请求已成功,请求所希望的响应头或数据体将随此响应返回。

  400 Bad Request:语义或参数有误,无法被服务器理解

  404 Not Found:请求失败,请求所希望得到的资源未被在服务器上发现。

  500 Internal Server Error:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。

  ●响应头: 包含了对服务器的描述、对响应数据的描述
  Server://服务器类型
  Content-Type :image/png //返回数据类型
  Content-Lenght:1024 //返回数据长度
  Date://返回日期
  ●响应体:服务器返回给客户端的具体内容。
 
 

iOS网络篇2-http协议通信规则