HTTP——Postman——库

一、HTTP

  1、简介:Hyper Text Transfer Protocol(超文本传输协议),是用于从万维网( WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议,简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。

    ●HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。

    ●HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,因此不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

    ● 基于 TCP/IP 通信协议来传递数据(HTML 文件、图片文件、查询结果等)。

  2、工作原理

    ● HTTP 协议工作于客户端-服务端架构上。

    ● 浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求。

    ● Web 服务器有:Apache 服务器,IIS 服务器(Internet Information Services)等。

    ● Web 服务器根据接收到的请求后,向客户端发送响应信息。

    ● HTTP 默认端口号为 80,但是你也可以改为 8080 或者其他端口。

  3、注意事项

    ●HTTP 是无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。

    ●HTTP 是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送,客户端以及服务器指定使用适合的 MIME-type 内容类型。

    ●HTTP 是无状态:HTTP 协议是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就较快。

  4、TCP三次握手

        

    ●第一次:客户端尝试连接服务器,向服务器发送 syn 包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入 SYN_SEND 状态等待服务器确认;

    ●第二次:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个 SYN包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;

    ●第三次:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

  5、请求方法

               

 

  6、客户端请求消息:请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分。

      

   7、服务器响应消息:分别是:状态行、消息报头、空行和响应正文四个部分。

                 

二、HTTPS 作用

  1、简介:是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

      ●HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:

          (1)、TCP 三次同步握手;

          (2)、客户端验证服务器数字证书;

          (3)、DH 算法协商对称加密算法的密钥、hash 算法的密钥;

          (4)、SSL 安全加密隧道协商完成;

          (5)、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。

  2、HTTPS 的信任基于预先安装在操作系统中的证书颁发机构(CA)。与一个网站之间的 HTTPS 连线仅在这些情况下可被信任:

    ●浏览器正确地实现了 HTTPS 且操作系统中安装了正确且受信任的证书颁发机构;

    ●证书颁发机构仅信任合法的网站;

    ●被访问的网站提供了一个有效的证书,也就是说它是一个由操作系统信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);

    ●该证书正确地验证了被访问的网站(例如,访问 https://www.runoob.com 时收到了签发给 www.runoob.com 而不是其它域名的证书);

    ●此协议的加密层(SSL/TLS)能够有效地提供认证和高强度的加密。

三、HTTP 与 HTTPS 区别

    ●HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

    ●使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

    ●HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。

    ●http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

    ●HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

四、Postman使用

   1、新增目录、选中目录鼠标右键可以在该目录下新增一个HTTP请求方法,post/get等,为便于区分可以命名接口名字,如下图二为“获取权限”。

        

  2、关于请求体有很多种参数填入方法,如下,如果是JSON格式,则选择JSON即可,如果不是则有多种请求方式。(也可新增相应的请求头)

    

    

  3、Post方式请求一个接口,如下:假如我们需要将这个获取的参数用作后面接口的  head作为认证 : Authorization : ........

    

  4、GET方式请求一个接口,如下:用上面接口请求的数据放到 head 里作为认证。

    

    (1)、如果是Authorization有两种方式,一种是选中Headers项手动填入 key   及  Value,如下:(Bearer头填不填都可)

      

    (2)、另一种是选中Authorization 项,选Bearer Token项,填入获取的Token,如下:(Bearer头不需要填)

      

  5、PUT方式请求一个接口,如下:

    

五、使用HTTP库

  1、在嵌入式Linux中,访问HTTP服务器通常需要使用HTTP库。常用的HTTP库包括:

    (1)libcurl: 具有跨平台性,支持多种协议(包括HTTP/HTTPS),功能强大,使用简单。

    (2)libwww:是W3C网站开发的通用HTTP库,支持HTTP/HTTPS协议,功能丰富,但使用较复杂。

    (3)libmicrohttpd:由GNU组织开发的微型HTTP库,支持HTTP/HTTPS协议,性能优秀,但功能较简单。

    这里以libcurl为例,介绍如何在嵌入式Linux中使用libcurl访问HTTP服务器:  

                官方网站:https://curl.se/

                下载地址:https://curl.se/download.html

              通常情况下,官方网站会提供库的源码压缩包,可直接下载进行编译

              如在Ubuntu中安装libcurl库可以通过以下命令:

              

  2、下载并安装libcurl库:

    

  3、在代码中包含curl头文件,并链接curl库:

    

 

  4、设置HTTP请求参数,并执行HTTP请求:

    

  5、释放资源:

    

     6、在嵌入式Linux设备上,静态库通常是通过交叉编译生成的。交叉编译是指在PC机上编译出能在嵌入式Linux设备上运行的程序,需要使用特定的交叉编译工具链,如arm-linux-gnueabihf、aarch64-linux-gnu等。

    下面简单介绍一下交叉编译生成静态库的步骤:

    (1)、准备交叉编译工具链,不同架构编译链不同,如:

        

    (2)、下载和编译静态库源码

         

         这里的--host选项指定交叉编译的目标架构为arm-linux-gnueabihf,并指定静态库的安装路径为/usr/local/library 

    (3)、交叉编译测试程序

         

        这里的-L选项指定静态库的链接路径为/usr/local/library/lib-l选项指定需要链接的静态库名为mylib

        通过以上步骤,就可以在嵌入式Linux设备上生成和使用静态库。需要注意的是,在交叉编译生成静态库时,需要指定正确的交叉编译工具链和目标架构,否则可能会出现链接错误、崩溃等问题。

  7、三种请求方式在嵌入式linux下可通过如下方式切换:

       

 

posted @ 2023-06-19 11:33  耿通宇  阅读(94)  评论(0编辑  收藏  举报