在把云端环境配置好以后就需要对交互方式有一定的了解,相信不是所有人都知道http协议究竟是个什么,所以这一章主要说明 http协议
实际上很多人就卡在这一步
了解http结构
- 什么是http:
大家都知道http是
的协议,但是为什么说http是应用层的协议?,http和TCP到底有什么关系? 我想会来看这篇文章的人大概也是云里雾里的,所以首先解释一下http是什么应用层
大家都知道叫HTTP(HyperText Transfer Protocol)
所以超文本传输协议
到底是个啥玩意儿?超文本
就是超文本
,本质就是被关联的文字和信息相互之间可以进行跳转形成网络结构的文本,通俗一点可以狭义的理解的被超级文本
连接起来的数据,当然没这么简单,但是你只用知道超链接(hyperlink)
就像这就是一个名字而已,随便起的名字
奥特曼(Ultraman)
一样不用去深究.
那么
是个传输协议,首先是为了传输,其次这是传输协议.所以其实这后面的两个单词才是中因为是HyperText Transfer Protocol(超文本传输协议)
所以这就只是个协议
作为一个规则
我们只需要去了解规则中的规矩是什么就行了,而实际上这个规则是建立与规则
上的规则TCP/IP
是一个TCP
而传输层的协议
是基于http
协议而且是由应用进行规划的所以被称为TCP
,应用层协议
而这个在实际传输中实际上是使用TCP协议传输文本
就是http协议规定的内容称之为:文本(ASCII编码)
.报文
一种是我们作为客户去
http的报文又分为两种
服务器的
勾搭
,一种是服务器接收到你的
请求报文
把相应的内容发送给你的
勾搭
响应报文
-
http请求报文结构
实际上http报文主要分为三个部分:
A.
B.请求行
C.请求头
请求体
是不是听起来很高大上,感觉看不懂?实际上很简单
先看个图:
这个图再来一个http请求报文POST /search HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, application/x-shockwave-flash, */* Referer: http://www.google.cn/ Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld) Host: www.google.cn Connection: Keep-Alive Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g; NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0RnHcJU37y- FxlRugatx63JLv7CWMD6UB_O_r hl=zh-CN&source=hp&q=csdn
第一行:
请求行
用两个空格分隔成了三部分
第一个部分
POST
就是请求的方法还有其他的方法我这里就不赘述了(自己百度哈).
第二个部分
就是请求路径(/search
),在这个报文里面我们请求的链接是URL
那么这个地方就是http://www.google.cn/search
,或者链接是/search
那么这个地方就是http://api.heclouds.com/devices
也就是/devices
域名
后面的路径
第三个部分
协议版本,没有特殊要求都是HTTP/1.1
HTTP/1.1
第二行到第一个空行之前
不要被名字迷惑都是协议定制者自己取得你知道是个啥就行了请求头
头部类似于键值对,或者说python中的字典,这种形状,如在到下一个空行之前都是头部
,Accept-Language: zh-cn
就是Accept-Language
而键名
就是该zh-cn
对应的内容,是键名
,把你发送的数据进行相对应的处理一般就在头部定义了方便服务器读取的
第一个空行后
也是比较高大上的名字实际上就是:请求体
比如上面的你向服务器发送的内容
那么很明显我们是向服务器发送了这个字符串hl=zh-CN&source=hp&q=csdn
实际上可以使任何的内容撇开服务器规则
,当然如果是向服务器查询信息就要按规矩来.可以是其他任何文字
了解了这些以后就可以知道,我这段报文实际上是在Google搜索csdn
- http响应报文结构 实例:
其他地方没有什么区别主要是HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Content-Type: text/html; charset=UTF-8 Content-Encoding: UTF-8 Content-Length: 138 Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) ETag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Connection: close <html> <head> <title>An Example Page</title> </head> <body> Hello World, this is a very simple HTML document. </body> </html>
第一行:
协议版本,一般都是HTTP/1.1
HTTP/1.1
.
第二个部分
状态码,就是我们平时那个200
404
就是这里的
第三个部分
状态码描述简单描述一下第二部分是什么OK
以上便是在使用OneNet中需要的用到http的主要知识