IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 云学python (第5章对象带你飞之HTTP通信)《vamei-从Python开始学编程》 笔记 -> 正文阅读

[网络协议]云学python (第5章对象带你飞之HTTP通信)《vamei-从Python开始学编程》 笔记

1.HTTP通信简介

在通信这个神秘的过程中,参与通信的个体总要遵守特定的协议Protocol)为了多层次地实现全球互联网通信,计算机通信也有一套多层次的协议体系。

HTTP协议是最常见的一种网络协议。它的全名是the Hypertext Transfer Protocol,即超文本传输协议。HTTP协议能实现文件,特别是超文本文件的传输。在互联网时代,它是应用最广的互联网协议之一。在浏览器中输入http打头就是要用HTTP协议访问相应网站。

HTTP的工作方式类似于快餐点单:

1)请求request)顾客向服务员提出请求“来个鸡腿汉堡”。

2)回复(response)服务员根据情况,回应顾客的请求。

根据情况不同,服务员的回应可能有很多种,比如:

?服务员准备鸡腿汉堡,将鸡腿汉堡交给顾客。(一切0K)

?服务员发现自己工作在甜品站。他让顾客前往正式柜台点单。(重新定向)

?服务员告诉顾客鸡腿汉堡没有了。(无法找到)

交易结束后,服务员就将刚才的交易抛到脑后,准备服务下一位顾客。

计算机发出请求会遵照下面的格式:


GET /index.html HTTP/1.1
Host: www.example.com

在起始行中,有三段信息:

?GET方法。用于说明想要服务器执行的操作。

? /index.html?资源的路径。这里指向服务器上的index.html文件。

?HTTP/1.1协议的版本。HTTP第一个广泛使用的版本是1.0,当前版本为1.1

早期的HTTP协议只有GET方法。遵从HTTP协议,服务器接收到?GET请求后,会将特定资源传送给客户。这类似于客户点单,并获得汉堡的过程。GET方法之外,最常用的是POST方法。它用于从客户端向服务器提交数据,请求的后面会附加上要提交的数据。服务器会对POST?方法提交的数据进行一定的处理。样例请求中有一行头信息。这个头信息的类型Host,说明了想要访问的服务器的地址。

服务器在接收到请求之后,会根据程序,生成对应于该请求的回复, 比如:

HTTP/1.1?200?0K

Content-type: text/plain

Content-length:?12

Hello World!

回复的起始行包含三段信息:

?HTTP/1.1协议版本

??200:?状态码(status code)

?OK状态描述

OK是对状态码200的文字描述,它只是为了便于人类的阅读。电脑只关心三位的状态码(Status Code),即这里的200200表示一切OK,?资源正常返回。状态码代表了服务器回应的类型。其他常见的状态码还有很多,例如:

·302,重新定向Redirect)我这里没有你想要的资源,但我知道另一个地方XXX有,你可以去那里找。

404,无法找到NotFound)我找不到你想要的资源,无能为力。

下一行Content-type说明了主体所包含的资源的类型。根据类型的不同,客户端可以启动不同的处理程序(比如显示图像文件、播放声音文件等)。下面是一些常见的资源:

  • text/plain:普通文本
    text/html:?HTML?文本
    image/jpeg:?jpeg?图片
    image/gif:?gif?图片

    Content-length说明了主体部分的长度,以字节byte)为单位。

剩下的是回复的主体部分,包含了主要的文本数据。这里是普通类型的一段文本

Hello World!

通过一次HTTP交易,客户端从服务器那里获得了自己请求的资源,即这里的文本。上面是对HTTP协议工作过程的一个简要介绍,省略了很多细节。

2.?http.client?

HTTP请求最重要的一些信息是主机地址、请求方法和资源路径。只要明确这些信息,再加上Python标准库中的http.client包的帮助,就可以发出HTTP请求了。

import http.client
conn = http.client.HTTPConnection("www.example.com") #主机地址
conn.request("GET","/")	#请求方法和资源路径
response = conn.getresponse()	#获得回复
print(response.status,response.reason) #回复的状态码和状态描述
content = response.read()	#回复的主体内容
print(content)
——————————————————
200 OK
b'<!doctype html>\n<html>\n<head>\n    <title>Example Domain</title>\n\n    <meta charset="utf-8" />\n    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n    <meta name="viewport" content="width=device-width, initial-scale=1" />\n    <style type="text/css">\n    body {\n        background-color: #f0f0f2;\n        margin: 0;\n        padding: 0;\n        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n        \n    }\n    div {\n        width: 600px;\n        margin: 5em auto;\n        padding: 2em;\n        background-color: #fdfdff;\n        border-radius: 0.5em;\n        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n    }\n    a:link, a:visited {\n        color: #38488f;\n        text-decoration: none;\n    }\n    @media (max-width: 700px) {\n        div {\n            margin: 0 auto;\n            width: auto;\n        }\n    }\n    </style>    \n</head>\n\n<body>\n<div>\n    <h1>Example Domain</h1>\n    <p>This domain is for use in illustrative examples in documents. You may use this\n    domain in literature without prior coordination or asking for permission.</p>\n    <p><a href="https://www.iana.org/domains/example">More information...</a></p>\n</div>\n</body>\n</html>\n'

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 19:15:05  更:2022-04-22 19:18:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:25:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码