iOS开发HTTP协议相关知识总结

it2022-05-07  15

HTTP原理

什么是URLURL中常见的几种协议什么是HTTP协议HTTP是做什么的为什么要使用HTTP协议HTPP协议的通信过程介绍 HTTP请求HTTP响应HTTP请求的选择 两种发送请求方式的比较(应用场景)GET请求POST请求怎么发送HTTP请求 苹果原生的发送方式通过第三方框架

1. 什么是URL

  在介绍HTTP之前,我们对URL有一定的了解的,因为只有通过URL我们才能拿到网络上的资源。那么究竟什么是URL?

  URL(Uniform Resource Locator 统一资源定位符):URL其实就是资源在互联网上的地址、位置,互联网上的每一个资源都有一个唯一的URL,只有通过URL我们才能找到互联网上唯一的资源。

  URL的基本构成:协议://主机地址/路径

  http://www.cnblogs.com/iOSClub/articles/5233432.html

  http://192.168.38.24/imgs/01.png

 

 

协议:不同的协议决定了不同的资源查找和传输方式

主机地址:存放资源主机(服务器)的IP地址

路径:资源在主机(服务器)的具体位置

 

2.URL中常见的几种协议

  了解了URL是什么,那么URL中常用的HTTP协议都有哪些?

http:// 超文本传输协议,访问远程网络资源的方式,也是我们最常用的协议ftp:// 访问共享主机的资源的方式file:// 访问本地计算机资源的方式mailto:// 访问电子邮件地址的方式

注意:URL中不能出现空格以及中文等特殊符号.

URL中,所有的字符都必须是 ASCII 码;URL中不能出现中文和特殊符号(如空格); 

所以,如果 URL 中出现了中文,需要添加百分号转译.

urlString=[urlStringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

3. 什么是HTTP协议

  HTTP协议(HyperText Tranfer Protocol 超文本传输协议):HTTP规定客户端和服务器之间数据的传输方式。

  HTTP底层的原理:HTTP的底层就是通过socket建立连接通信管道的,实现数据的传输。HTTP是一个TCP传输协议(方式),是一个可靠的安全的协议。

  HTTP协议是在网络开发中最常用的协议.不管是移动客户端还是PC端,访问网络资源经常使用HTTP协议.

 

4.HTTP是做什么的

HTTP的作用可以用一句话概述:使客户端和服务端的数据有效的传输。

 

5.为什么要使用HTTP协议(HTTP协议的优点)

灵活:HTTP协议允许传输各种类型的数据。简单快速:HTTP协议简单,传输速度快。因为其协议简单,HTTP服务器规模比较小,所以通信速度快。HTTP协议是短连接(非持续性连接):HTTP限制每次每次连接只处理一个请求,服务器对请求作出响应后就马上断开,这样就可以节省传输时间。(这是HTTP 0.9/1.0之后使用的)

 

6. HTPP协议的通信过程介绍

了解HTTP协议的简介后,继续了解HTTP协议的通信过程,HTTP的通信过程包含两个方面:

 

 

HTTP请求:客户端想服务器端索要数据

HTTP协议规定:一个完成的HTTP协议要包含三个部分: 请求行、请求头、请求体

请求行:主要包含请求方法、请求路径、HTTP协议版本

  "GET /resources/images/ HTTP/1.1"

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

  Host: 192.168.38.24:8080 class="Apple-tab-span">// 客户端想访问的服务器主机地址

  Accept: text/html // 客户端所能接收的数据类型

  Accept-Language: zh-cn // 客户端的语言环境

  Accept-Encoding: gzip // 客户端支持的数据压缩格式

  Host: m.baidu.com // 客户端想访问的服务器主机地址

  User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:37.0) Gecko/20100101 Firefox/37.0 // 客户端的类型,客户端的软件环境

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

 

HTTP响应:服务器返回客户端想要的数据

客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端

HTTP协议规定:1个完整的HTTP响应中包含以下内容:

状态行:包含了HTTP协议版本、状态吗、状态码对应的英文名称HTTP/1.1 200 OK响应头:包含了对服务器的描述,对返回数据的描述。

        Content-Encoding: gzip // 服务器支持的数据压缩格式

        Content-Length:  1528 // 返回数据的长度

        Content-Type:  application/xhtml+xml;charset=utf-8 // 返回数据的类型

        Date: Mon, 15 Jun 2015 09:06:46 GMT // 响应的时间

 Server: apache  // 服务器类型

实体内容:服务器返回给客户端的具体数据(图片/html/文件...)

7. HTTP请求的选择

1.HTTP请求的简单说明

1.HTTP的方法

  HTTP协议定义了很多方法对应不同的资源操作,其中最常用的是GET 和 POST 方法.

  GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH

  增:PUT

  删:DELETE

  改:POST

  查:GET

  因为 GET 和 POST 可以实现上述所有操作,所以,在现实开发中,我们只要会用GET 和 POST 方法就可以了.

2.参数

  在与服务器交互时,有时候需要给服务器发送一些数据,比如登录时需要发送用户名和密码.

  参数:就是指传递给服务器的具体数据.

 

2. GET请求

  GET:本质是从服务器得到数据,效率更高.并且GET请求可以被缓存.

 注意: 网络缓存数据,保存在SQLite的数据库中(路径:NSHomeDirectory())。

  在请求 URL 后面以 ? 的形式跟上发给服务器的参数,参数以 "参数名"="参数值"的形式拼接,多个参数之间用 & 分隔.

 注意:GET的长度是有限制的,不同的浏览器有不同的长度限制,一般在2~8K之间.

 

3. POST请求

  POST:本质是向服务器发送数据,也可以获得服务器处理之后的结果,效率不如GET.POST请求不可以被缓存,每次刷新之后都需要重新提交表单.

发送给服务器的参数全部放在'请求体'中;理论上,POST传递的数据量没有限制.

注意:所有涉及到用户隐私的数据(密码/银行卡号等...)都要用POST的方式传递.

4.GET和POST请求的选择

GET和POST请求的选择可以参考下面四个原则:

  1.如果要传递大量数据,比如文件上传,只能用POST请求

  2.GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST

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

  4.如果是增加、修改、删除数据,建议使用POST

 

8. 怎么发送HTTP请求

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

1. 苹果原生的发送请求

NSURLConnection:用法简单,最古老最经典最直接的一种方案NSURLSession:iOS 7新出的技术,功能比NSURLConnection更加强大CFNetwork:NSURL*的底层,纯C语言

2. 第三方框架

ASIHttpRequest:外号“HTTP终结者”,功能极其强大,可惜早已停止更新AFNetworking:简单易用,提供了基本够用的常用功能

具体如何发送请求,前面的博客已经有做说明不在此赘述了。

 

转载于:https://www.cnblogs.com/iOSClub/p/5421245.html


最新回复(0)