• requests库入门-2-简单了解HTTP协议


      前面一篇文章,我们介绍了Python3环境下如何安装requests。除了这个环境安装之外,我还建议你安装一个Python IDE环境,我这边用Pycharm这个工具,下载和安装以及简单设置Pycharm环境。在使用requests之前,我们需要花时间去学习和了解HTTP协议,requests是处理HTTP相关的一个功能强大的类库。

    1. HTTP的含义是什么

    Hypertext Transfer Protocol (HTTP),中文翻译过来就是超文本传输协议。

    2.HTTP协议的定义

            我把wikipedia上的定义复制过来:TheHypertext Transfer Protocol (HTTP) is an application protocol (应用层)for distributed(分布式), collaborative(协作式), and hypermedia information systems(超文本信息系统). HTTP is the foundation of data communication for theWorld Wide Web.(HTTP是互联网的基石)。概念很专业和绕口,我们只需要简单了解下就可以。

    3.一个简单图形表示HTTP协议

     

          上面有两个对象,一个是寄件人,另一个是收件人;有两个处理流程,一个是发信,另一个是回信。这个生活之中的发信和收信很形象地表示了HTTP发送请求和处理请求的过程。寄信人相当于,HTTP中的Client端,这里一般指浏览器这样的软件,收信人相当于软件后台的Server端,也就服务器。用户在浏览器上点击一个东西,就相当于给服务器发送一个信件,服务器收到之后,就给出应答,并添加一些数据包给Client端,这个过程相当于回信。用一句话描述就是,Client端是发送请求的,Server端是处理和响应请求的。

    4.HTTP协议的三次握手过程

    这里把百度百科的解释贴过来。

     

    这个结合上面的发信和收信,能够很好理解这个三次握手过程。这个问题,面试过程经常被问到,所以,平时自己还是需要准备一下,用自己能够理解的语句去描述三次握手过程。

    5.用浏览器自带工具来理解用户打开百度的完整过程。

    5.1 火狐浏览器打开百度首页,点击F12,注意,我在火狐上安装过firepath这个插件。

    注意,一开始下图是没有数据的,我们点击“网络”,点击“HTML”,刷新百度首页,里面可以看到下面的数据。

     

           我们先看看第一行。GET表示是HTTP请求类型是GET,常见的还有POST类型。www.baidu.com是我们请求的url,状态下有 200 OK,200表示请求正常,没有报错。时间线241表示发送和处理这个请求耗时421毫秒。

    5.2 点击上面 GET www.baidu.com

    我们先来看看请求头

     

           请求头,cookies先不管,后面介绍。Host就是我们访问远程的主机,也就是Server端。user-Agent:指的是用户是用什么工具或者平台发起的HTTP请求。这里我们可以看到是火狐浏览器。

    在看看响应头


           响应头观察Content-Type是一个text/html文件,字符编码是uft-8,这个时候你点击上面响应这个tab,这些就百度首页的前端代码,通过渲染,就是我们平时浏览器看到的百度首页。

          我们已经简单对HTTP有一个初步认识,知道发生请求和处理请求的大致过程。虽然还有很多概念,我们不了解,但是这里我们先放下,只需要有一个大概理解就可以,毕竟我们不是深入学习HTTP协议。下一篇,我们会进入简单的小demo。

  • 相关阅读:
    PowerDesigner与Eclipse同步开发,PowerDesigner使用教程
    什么是POJO
    java中的<?><T><E>详解Jdk5.0新特性Generic Types (泛型)
    PowerDesigner 数据建模技术视频教程
    SQL如何在已有的一张表中插入一列类型为INTEGER数据 并赋初始值为0
    PowerDesigner中CDM数据类型和PDM数据类型间的mapping (对应关系)详解
    Java Web项目设计数据库时是否需要在表中加备用字段?
    PowerDesigner使用教程
    聚合与组合的区别理解(原)
    The requested list key 'map' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or peopl .
  • 原文地址:https://www.cnblogs.com/weihanhan/p/14669878.html
Copyright © 2020-2023  润新知