HTTP原理 请求方法

———————————————————————————————————————ios

HTTP的工做过程json

一次HTTP操做称为一个事务,其工做过程分为四步:浏览器

1.客户机与服务器创建链接:客户单击某个超级连接,HTTP的工做开始,接下来进行TCP链接的三次握手过程。安全

2.创建链接后,客户几发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号、MIME信息(包括请求修饰符、客户机信息和可能的内容)。服务器

3.服务器接到请求后,给予相应的响应信息,其格式为:一个状态行(包括信息的协议版本号)、一个成功或错误的代码、后面的是MIME信息(包括服务器信息、实体信息、可能的内容)。网络

4.客户端接收到服务器所返回的信息,经过浏览器显示在用户的显示屏上,而后客户机与服务器断开链接。客户端收到服务器信息后,向服务器发送一个确认包,此包发送完毕,表示完成三次握手。架构

———————————————————————————————————————框架

HTTP协议的主要特色:异步

1.支持客户/服务器模式-》过程post

2.简单快速:客户向服务器请求服务时,只需发送请求方法(经常使用的有GET/POST/HEAD)和路径。每种请求方法规定了客户与服务器联系的类型不一样,因为HTTP协议简单,使得HTTP服务器的程序规模小,于是通讯速度快。

3.灵活:HTTP容许传输任意类型的数据对象,正在传输的类型用Content-Type加以标记。

4.无链接:限制每次链接只处理一个请求,服务器处理完客户端的请求,并收到客户的应答后,断开链接。

5.无状态:协议对于事务处理没有记忆能力。缺乏状态意味着后续处理须要前面的信息,则它必须重传,这样致使1.每次链接传送的数据量增大 2.服务器不须要先前的信息,它的应答速度较快。

———————————————————————————————————————

HTTP请求过程

HTTP请求: 短链接:一次链接,服务器只处理一个请求!请求处理完毕以后,会自动断开链接!

HTTP请求是一个特殊处理的Socket(TCP/IP)

{

    一个完整的HTTP请求分为两个过程:

    

    1. 请求

    {

        请求行: 包含了请求方法、请求资源路径、HTTP协议版本

GET(请求方法) /resources/vedios.json(资源路径) HTTP/1.1(http协议版本)

        

        请求头:包含了对客户端的环境描述、客户端请求的主机地址等信息

User-Agent (在请求头中设置一些信息,这些信息是告诉服务器的一些数据!),请求方法通常都是在请求头中设置!

        

        请求体: 客户端发给服务器的具体数据,好比文件数据

只有 POST 请求才有请求体 ,GET 请求是没有请求体的. 若是这个请求须要附带一些参数(经过参数告诉服务器返回什么数据),POST请求将参数封装在请求体中,GET请求直接将参数拼接在url中.

    }

    2. 响应

    {

        响应行: HTTP/1.1(http协议版本) 304(网络链接状态码) Not Modified(网络链接状态码简要说明)

        响应头: 会返回服务器信息,还会返回本次请求数据(实体内容)的信息.

        

        实体内容: 就是客户端想要的数据!

    }

}

———————————————————————————————————————

常见的响应状态码:

200          请求成功

400客户端请求的语法错误,服务器没法解析

404服务器没法根据客户端的请求找到资源

500服务器内部错误,没法完成请求

———————————————————————————————————————

发送HTTP请求的方法

1.简单说明

在HTTP/1.1协议中,定义了8种发送http请求的方法

GET、POST、OPTIONS、HEAD(只得到响应头信息,不获取实体内容)、PUT、DELETE、TRACE、CONNECT、PATCH

根据HTTP协议的设计初衷,不一样的方法对资源有不一样的操做方式

PUT :增

DELETE :删

POST:改

GET:查

提示:最经常使用的是GET和POST(实际上GET和POST都能办到增删改查)

 

2.get和post请求                   

要想使用GET和POST请求跟服务器进行交互,得先了解一个概念:参数就是传递给服务器的具体数据,好比登陆时的账号、密码

GET和POST对比:GET和POST的主要区别表如今数据传递上

GET

在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,好比http://ww.test.com/login?username=123&pwd=234&type=JSON

注意:因为浏览器和服务器对URL长度有限制,所以在URL后面附带的参数是有限制的,一般不能超过1KB

POST

发给服务器的参数所有放在请求体中

理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)

                     

3.GET和POST的选择

选择GET和POST的建议

(1)若是要传递大量数据,好比文件上传,只能用POST请求

(2)GET的安全性比POST要差些,若是包含机密\敏感信息,建议用POST

(3)若是仅仅是索取数据(数据查询),建议使用GET

(4)若是是增长、修改、删除数据,建议使用POST    

                     

4.iOS中发送HTTP请求的方案

在iOS中,常见的发送HTTP请求(GET和POST)的解决方案有

(1)苹果原生(自带)

NSURLConnection:用法简单,最古老最经典最直接的一种方案,可发送同步请求,也可发送异步请求。

NSURLSession:iOS 7新出的技术,功能比NSURLConnection更增强大,NSUrlSession 没有提供同步请求的方法. 全部关于 NSUrlSession 发送的网络请求都是异步的.

CFNetwork:NSURL*的底层,纯C语言

(2)第三方框架

ASIHttpRequest:外号“HTTP终结者”,功能极其强大,惋惜早已中止更新

AFNetworking:简单易用,提供了基本够用的经常使用功能

建议:

为了提升开发效率,企业开发用的基本是第三方框架

5.ASI和AFN架构对比

说明:AFN基于NSURL,ASI基于CFHTTP,ASI的性能更好一些。

———————————————————————————————————————

一、同步请求能够从因特网请求数据,一旦发送同步请求,程序将中止用户交互,直至服务器返回数据完成,才能够进行下一步操做,

二、异步请求不会阻塞主线程,而会创建一个新的线程来操做,用户发出异步请求后,依然能够对UI进行操做,程序能够继续运行

三、GET请求,将参数直接写在访问路径上。操做简单,不过容易被外界看到,安全性不高,地址最多255字节;

四、POST请求,将参数放到body里面。POST请求操做相对复杂,须要将参数和地址分开,不过安全性高,参数放在body里面,不易被捕获。

相关文章
相关标签/搜索