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协议都有哪些?

l   http:// 超文本传输协议,访问远程网络资源的方式,也是我们最常用的协议

l   ftp:// 访问共享主机的资源的方式

l   file:// 访问本地计算机资源的方式

l   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的通信过程包含两个方面:

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

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

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

"GET /resources/images/ HTTP/1.1"

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

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/20100101Firefox/37.0 // 客户端的类型,客户端的软件环境

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

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

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

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

l   状态行:包含了HTTP协议版本、状态吗、状态码对应的英文名称HTTP/1.1 200 OK

l   响应头:包含了对服务器的描述,对返回数据的描述。

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  // 服务器类型

l   实体内容:服务器返回给客户端的具体数据(图片/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. 苹果原生的发送请求

l   NSURLConnection:用法简单,最古老最经典最直接的一种方案

l   NSURLSession:iOS 7新出的技术,功能比NSURLConnection更加强大

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

2. 第三方框架

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

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

时间: 2024-12-14 18:17:38

http简记的相关文章

PDW V2培训简记

最近有幸参加了微软专家进行的为期一周PDW培训,将一些知识点记录如下: 不知道PDW是什么东西的,简单介绍一下:这是微软与HP/Dell合作推出的SQL Server数据仓库一体机,由HP或DELL提供硬件(机柜,四台服务器,两台交换机,IB),再由微软预装PDW版本的SQL Server 2012.购买了以后,直接通电就可运行.容量当然是可以从TB级增长到PB级,处理性能比普通SQL Server 2012快几十上百倍.主要用来进行大数据分析,不适合用于OLTP. 服务器配置: 四台物理的服务

Mysql一主多从和读写分离配置简记

Mysql一主多从和读写分离配置简记 标签: mysql数据库服务器class数据库servermanager 2012-05-30 16:44 14981人阅读 评论(1) 收藏 举报  分类: 数据库 版权声明:本文为博主原创文章,未经博主允许不得转载. 近期开发的系统中使用MySql作为数据库,由于数据涉及到Money,所以不得不慎重.同时,用户对最大访问量也提出了要求.为了避免Mysql成为性能瓶颈并具备很好的容错能力,特此实现主从热备和读写分离.在此简做纪要,以备日后所用! 一.配置主

macbook air安装ubuntu双系统简记

最近,显得无聊了,就在自己的macbook air上安装了ubuntu的双系统,其中各种曲折,在这里简记如下,如果你有安装ubuntu的需求,可以参考这里的步骤. 1.下载ubuntu的安装镜像, 这个在ubuntu的官网上下载,大概是1个G的大小吧.我下载的是14.04 LTS版本的,代号是Trusty Tahr. 2.把ubuntu刻录到u盘上, 这个有标准的步骤,照着一步步来就可以了. 1.把iso格式的镜像文件转换成dmg格式的hdiutil convert /path/to/ubunt

mac10.9.5 php5.4.45安装composer 简记

由于一直没升级系统版本,php也一直用的是系统默认的,导致新的一些东西用起来会有问题, 比如 composer ...  之前一直 没去理会,这次有个资源在github上没找到,想了想还必须弄弄这个东西了,废话不多说了,流水账如下: 系统版本: os x 10.9.5   php5.4.45   php配置简记 '/private/var/tmp/apache_mod_php/apache_mod_php-87.10~1/php/configure'  '--prefix=/usr'  '--m

简记git与SVN

svn与git是目前比较主流的版本控制系统,在这里简单记录一下它们之间的异同. 一,从架构来说,SVN是集中式,git是分布式. 集中式的优点是代码高度统一,缺点也很明显就是非常依赖于中央服务器.如果服务器宕机或者本地 无法联网,那么你将无法提交更新.还原.对比等,也就无法协同工作.同时SVN上的提交也并非是 每次都成功,如果有一个人在你提交的时候先提交,那么就会提示你先更新再提交.SVN原理上只关 心文件内容的具体差异,每次记录有哪些文件做了更新并且更新了哪些内容. 而分布式的git会在本地克

android 横竖屏切换 简记

横竖屏切换,不重新加载 1.activity声明android:configChanges="orientation|keyboardHidden|screenSize" Up to API 13 there was a new value to the configChanges attribute, screenSize So if you're using large screens make sure to add screenSize in your configChange

android系统又一次刷ROM简记(一)

当须要对android系统进行大刀阔斧的改造的时候,应该清晰的了解android各个image的组成才干做到庖丁解牛. 首先在android烧写过程中须要烧写的文件主要包含uboot.bin\boot.img\system.img\userdata.img\recovery.img等文件. 小米的刷机文件主要包含data\META-INF\recovery\system\blob\boot.img\file_contexts文件. Data目录下仅仅有一个目录miui从名字能够知道里面存放的文件

Lenet5简记

再次学习Lenet5,这里进行一个简单的记录 问题定义: 输入:32x32 灰度图片 输出:0-9 数字识别结果 总共7层(不包含输入,包含输出层): 输入-> 卷积->池化->卷积->池化->卷积->全连接->全连接输出 关键点: 卷积核:为5x5 padding:为0 步长:为1 留意点: 1.由于输入是灰度图像,可以认为通道数为1 2.在第二个卷积中,进行了不同feature的组合,第三个卷积中,进行全部累加组合(类似于后来的卷积,在后来的卷积中,组合变成了

《原创视频》牛腩学docker简记

牛腩学docker简记 http://blog.niunan.net/blog/show/1258https://www.cnblogs.com/niunan/p/10917506.htmlhttps://www.jianshu.com/p/1fd8ce0d49ed 本视频记录牛腩学习在vs中的.net core项目中的添加docker支持的简单记录云服务器上运行docker网站的思路:1. 云服务器上装nginx, mysql2. 云服务器上装docker3. 本地VS .NET CORE项目

asp.net core 3.0 更新简记

原文:asp.net core 3.0 更新简记 asp.net core 3.0 更新简记 Intro# 最近把活动室预约项目从 asp.net core 2.2 更新到了 asp.net core 3.0,记录一下,升级踩过的坑以及经验总结,包括但不限于 TargetFramework (netcoreapp2.2 需要更新为 netcoreapp3.0) Dependency Host/Environment Mvc Routing Swagger Dockerfile EF(不推荐更新)