7-4 Python发送HTTP请求
本节编程练习不计算学习进度,请电脑登录imooc.com操作

Python发送HTTP请求

在上一节,使用了Python自带的功能启动了一个HTTP服务器,并通过浏览器浏览到了这个HTTP服务器提供的页面。在浏览的过程中,实际上是浏览器向HTTP服务器发送了一个HTTP请求。

除了使用浏览器发送HTTP请求,通过代码也可以向HTTP服务器发送请求,Python提供了相关的库urllib,通过urllib包里面的request,可以向其他HTTP服务器发起请求。

from urllib import request
response = request.urlopen('https://www.imooc.com') # 向慕课网官网发出请求
print(response) # ==> <http.client.HTTPResponse object at 0x000001377D631948>

请求成功的话,会得到一个HTTPResponse,它是来自HTTP服务器的一个回应,可以把这个回应的一些信息打印出来。
状态码:

print(response.status) # ==> 200

状态码是一个三位整数,在HTTP协议的标准里面,定义了很多状态码,其中200表示请求是正常的。
响应头:

​for k, v in response.getheaders():
    print('{}: {}'.format(k, v))

将会输出以下信息,这是HTTPResponse附带的一些信息,包括服务端的服务器是什么、请求时间、内容类型、内容长度等等。

Server: openresty
Date: Thu, 20 Aug 2020 08:16:07 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 376639
Connection: close
Vary: Accept-Encoding
Vary: Accept-Encoding
X-Varnish: 280516221 281284036
Age: 29
Via: 1.1 varnish (Varnish/6.0)
X-Cache: HIT from CS42
Accept-Ranges: bytes

任务

请使用Python自带的功能,启动一个HTTP服务器,并使用urllib请求这个服务器,打印出状态码和回应头,并尝试分析这些信息。

  1. # Enter a code
下一节