iOS-HTTP浅析

HTTP原理

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

1 什么是URL

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

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

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

 

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

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

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

2.URL中常见的几种协议

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

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

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

       1>URL中,所有的字符都必须是 ASCII 码;

       2>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协议的优点)

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

 

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

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

1.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
  • 响应头:包含了对服务器的描述,对返回数据的描述。        
1         Content-Encoding: gzip // 服务器支持的数据压缩格式
2 
3         Content-Length:  1528 // 返回数据的长度
4 
5         Content-Type:  application/xhtml+xml;charset=utf-8 // 返回数据的类型
6 
7         Date: Mon, 15 Jun 2015 09:06:46 GMT // 响应的时间
8 
9     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:简单易用,提供了基本够用的常用功能

 

posted @ 2016-05-08 09:32  愤怒的芒果丶  阅读(301)  评论(1编辑  收藏  举报