HTTP协议基本知识
Xcode7.0以上版本必须操作:https http
- 在Info.plist中添加NSAppTransportSecurity类型Dictionary。
- 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES
HTTP协议
1. HTTP协议
HyperText Transfer Protocol 超文本传输协议。设计HTTP的最初目的是为了提供一种发布和接收HTML页面的方法。
是一个客户端和服务端请求和应答的标准。客户端发送一个到服务器上指定端口(默认端口是80)的HTTP请求,服务器在指定端口上监听客户端发送过来的请求,一旦收到,则向客户端发回一个状态行和消息(即客户端请求的资源)。客户端在收到资源(超文本)后,通过某些程序(浏览器),解析数据后才能够展示。
通过HTTP/HTTPS 协议请求的资源由统一资源标识符(Uniform Resource Identifiers)来标识,即URI。
格式:http://ip(地址,域名):端口/路径/index.php?参数列表,参数列表中每个参数用&符号隔开,参数都是key = value
在浏览器的地址栏里输入的网站地址叫做URL(Uniform Resource Locator,统一资源定位符),可以理解为门牌地址。
两者都可以确定要访问的资源在服务器上的位置。
URL 是URI的子集。
[扩展说明]
计算机的网络体系结构分以下7层:

- 数据的传输自底向上,各层均遵循不同的协议。其中,HTTP协议,及下方的HTTPS协议在应用层。
- HTTPS: 应用层协议,HyperText Transfer Protocol over Secure Socket Layer, 是以安全为目标的HTTP通道,可以说是HTTP的安全版。在HTTP下加入SSL层,用来将传输的内容加密。SSL的继任者是TLS(提供了数据加密及完整性的协议)。
与HTTP区别:
-- HTTPS 需要到CA申请证书,一般需要交费。此证书用于服务端,证明服务端用途类型,证书只有用于其对应的服务器时,客户端才信任此主机,例如银行系统网站。12306 开发者账号 https://developer.apple.com
-- HTTP是明文传输, HTTPS则是具有安全性的SSL加密传输,身份认证的。
-- 二者连接方式不同,默认端口也不一样,HTTP 是80, HTTPS 是443。
- TCP/UDP: 传输层协议(Transmission Control Protocol, 传输控制协议)即时通讯Socket XMPP
[Socket 是对TCP/IP协议的封装和应用,通过它,才能使用TCP/IP协议。] XMPP
- IP: 网络层协议 (Internet Protocol, 网络协议)
即时通讯技术:Socket 或XMPP
总:TCP/IP 是传输数据,解决数据如何在网络中传输,而HTTP 是解决如何包装数据,使传输的数据有意义。
2. HTTP请求/响应
>HTTP请求:
当客户端向服务器发出请求时,它向服务器传递了一个数据包NSData 0101,即请求信息,包括以下内容:
- 请求方法,URI, 协议 URL:http://ip地址或域名www.baidu.com:80(端口)/路径 ?参数列表(username=qidalin&password=123456&id=123) Get请求方法
- 请求头(Request Header)
- 请求正文
例如:
/* 请求方法/URI / 协议和协议版本 */
GET/sample.jspHTTP/1.1
/* 请求头 */
Accept:image/gif.image/jpeg,*/* // 指定客户端接收的内容类型
Accept-Language:zh-cn // 浏览器可接受
Connection:Keep-Alive // 是否需要持久连接
Host:localhost // 指定请求的服务器的域名和端口号
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0) // 包含发出请求的客户端信息
Accept-Encoding:gzip,deflate // 客户端可以支持的服务器返回内容压缩编码类型
……
其他见“/http请求头”
/* 请求正文,可包含客户端提交的查询字符串信息 */
type = 123
> HTTP响应
与请求类似,由以下组成:
- 协议版本 / 状态码
- 响应头 (Response Header)
- 响应正文
例如:
/* 协议版本 / 状态码 */
HTTP/1.1 200 OK
/* 响应头 */
Server:TWS
Date:Tue, 19 Jan 2016 07:22:55 GMT
Content-Type:application/json;charset=UTF-8
…..
其他见”/http响应头”
/* 响应正文 */
{"resultMsg":"Comments are lesson than 10","data":null,"isSuccess":false}
3. HTTP 请求方法
根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。
- GET方法
是默认的HTTP请求方法,平常也用GET方式提交表单数据,但这种方式下对表单数据只经过简单变码,同时作为URL的一部分向服务器发送,有一定的安全隐患。
例如:http:// www.xxx.com/login.jsp?username=xiao&password=12345678
从这个请求上很容易可辨认提交的内容(?之后的),而且此种方式是拼接URL串,若传输内容较多时,会使得URL很长,而URL长度是有限制的,超出的部分不会被发送。2k
- POST方法
主要用于向服务器提交表单数据,尤其是大批量数据。此方式下,数据不是作为URL的一部分而是作为标准数据传送给服务器。
POST方法克服了GET方法中信息无法保密和数据量小的缺点。出于安全考虑,表单提交一般采用POST方式。
4. HTTP状态码/应答码
是用以表示服务器http响应状态的3位数字代码。
所有状态码的第一个数字代表了五种状态之一。
常用状态码如下:
- 2字头 成功
200 OK : 成功
- 3字头 重定向
300 Multiple Choices : 重定向
- 4字头 请求错误
400 Bad Request : 错误的请求
401 Unauthorized : 未授权
403 Forbidden : 禁止访问
404 Not Found : 未找到
- 5,6字头 服务器错误
500 Internal Server Error : 内部服务器错误
HTTP协议基本知识的更多相关文章
- 【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识
第41章 HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...
- 【RL-TCPnet网络教程】第35章 FTP文件传输协议基础知识
第35章 FTP文件传输协议基础知识 本章节为大家讲解FTP(File Transfer Protocol,文件传输协议)的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) ...
- 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识
第33章 SMTP简单邮件传输协议基础知识 本章节为大家讲解SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的基础知识,方便后面章节的实战操作. (本 ...
- 【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识
第25章 DHCP动态主机配置协议基础知识 本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP ...
- 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识
第16章 UDP用户数据报协议基础知识 本章节为大家讲解UDP(User Datagram Protocol,用户数据报协议),需要大家对UDP有个基础的认识,方便后面章节UDP实战操作. ...
- 开发者应该掌握 WebSocekt 协议的知识
文章介绍 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它的出现使客户端和服务器之间的数据交换变得更加简单.WebSocket 通常被应用在实时性要求较高的场景,例如赛事数据. ...
- IOS Socket 01-网络协议基础知识
1. 网络参考模型 OSI参考模型 TCP/IP参考模型 2. 七层简述 1)物理层:主要定义物理设备标准,如网线的接 ...
- USB协议[转]_基本上涵盖了所有最基础的USB协议相关知识。
背景: 需要使用到USB协议,我一直尝试着去强记这个流程,现在看来,其实不用.看多了,把这个过程具象出来,就牢牢记住了. 正文: 正文转自:http://fangjian0518.blog.163.c ...
- TCP/IP 和HTTP 协议基础知识
来源:http://www.myhack58.com/Article/60/63/2014/50072.htm 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过 ...
- TCP/IP网络协议基础知识集锦[转]
引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP协议簇是由OSI七层模型发展而来的,之所以 ...
随机推荐
- 实现iOS图片等资源文件的热更新化(二):自定义的动态 imageNamed
这篇文章,要解决的是,使用一个自定义的 imageNamed 函数来替代系统的 imageNamed 函数.内部逻辑,将贯穿对比论证 关于"合适"的图片的定义.对iOS加载图片的规 ...
- 检测WCF服务是否在线第二版
上一版在这里http://www.cnblogs.com/kklldog/p/4878296.html 上一版主要是解决了监控服务不需要手动添加服务引用的问题,但是还是需要在配置文件中添加对应的end ...
- 在Windows Phone 8中使用Live Connect并保持登陆状态
Live Connect可以让各种客户端访问Live账号.获取好友列表.访问One Drive的文件等,官方地址在此:http://msdn.microsoft.com/zh-cn/live/ff51 ...
- DevExpress的XtraReport和微软RDLC报表的使用和对比
我们开发程序的时候,经常会碰到一些报表,如果是Winform的报表,一般可以采用DevExpress控件组的XtraReport,或者微软的RDLC报表,当然还有一些其他的,在此不再赘述.由于本人在W ...
- 基于.Net Framework 4.0 Web API开发(2):ASP.NET Web APIs 参数传递方式详解
概述: ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.调用API过程中参数的传递是必须的,本节就来谈谈 ...
- 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)
[源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...
- 【Java每日一题】20161207
package Dec2016; public class Ques1207 { public static void main(String[] args) { new Test(); new Te ...
- Intellij Idea上传本地项目到Git
方法一:选择菜单VCS-Import into Version Control - Share project on Github,填写仓库名和github账户之后,点击"Share&quo ...
- Hewlett-Packard Enterprise 实习总结日记
人生的第一份正式的实习工作时在HP,受益颇多.突然要离开了,还是非常舍不得的.在公司实习这半年多时间,写篇博客,对这期间的成长经历做一些总结.先说一个典故:我叫史蒂夫·乔布斯,我想找一些零件来做一台频 ...
- Social Media POC KT Session
地址: 1. http://c0048925.itcs.hp.com:8080/datamining/report/brandfocus.html Social Media POC是针对Social ...