简介
用于处理超文本传输协议的模块
文档查询
https://docs.python.org/zh-cn/3/library/http.html
参数列表
模块分类
http.client | 是一个底层的HTTP协议客户端 |
http.server | 包含基于 socketserver的基本HTTP服务器的类 |
http.cookies | 包含一些有用来实现通过 cookies 进行状态管理的工具 |
http.cookiejar | 提供了 cookies 的持久化 |
http.client
这个模块定义了实现 HTTP 和 HTTPS 协议客户端的类。
常量 | |
http.client.HTTP_PORT | http协议默认的端口号,总是80端口 |
http.client.HTTPS_PORT | https协议默认的端口号,总是443端口 |
http.client.responses | 将HTTP 1.1状态码映射到W3C名字的字典 |
HTTPConnection
简介
网页连接或请求
模块导入
from http.client import HTTPConnection
语法
HTTPConnection(host, port=None, [timeout, ]source_address=None, blocksize=8192)
例子
http.client.HTTPConnection('www.python.org')
http.client.HTTPConnection('www.python.org:80')
http.client.HTTPConnection('www.python.org', 80)
http.client.HTTPConnection('www.python.org', 80, timeout=10)
函数 | |
request | 请求方式 【语法】 request(method, url, body=None, headers={}, *, encode_chunked=False) |
getresponse | 服务器返回的内容 |
set_debuglevel | 设置调试级别,默认调试级别是 0 意味着没有调试输出 【语法】 set_tunnel(host, port=None, headers=None) |
set_tunnel | 设置 HTTP 隧道链接的主机和端口, 这允许连接使用代理服务器。 【语法】 set_tunnel(host, port=None, headers=None) |
connect | 连接指定的服务器, 默认情况下,如果客户端没有连接, 会在 request 请求时自动调用该方法 |
close | 关闭连接 (关闭连接后再次请求) |
putrequest | 应为连接服务器之后首先调用的函数。 将向服务器发送一行数据, 包含 method 字符串、url 字符串和 HTTP 版本( 【语法】 putrequest(request, selector, skip_host=False, skip_accept_encoding=False) |
putheader | 发送http头部 【语法】 putheader(header, argument[, …]) |
endheaders | 向服务器发送一个空行,表示头部文件结束。 可选的 message_body 参数可用于传入一个与请求相关的消息体。 【语法】 endheaders(message_body=None, *, encode_chunked=False) |
send | 发送数据到服务器, 应该在 endheaders() 方法之后和在 getresponse() 方法之前调用。 【语法】 send(data) |
属性 | |
blocksize | 用于发送文件类消息体的缓冲区大小 |
HTTPResponse对象
用法
response=HTTPSConnection(url).getresponse()
函数 | |
read | 返回响应体(html>body)内容。 |
readinto | 返回读取的字节数。 |
getheader | 返回标头 name 的值, 如果没有匹配 name 的标头则返回 default。 【语法】 getheader(name, default=None) |
getheaders | 返回 (header, value) 元组构成的列表。 |
fileno | 返回底层套接字的 fileno |
属性 | |
msg | 包含响应头的 http.client.HTTPMessage 实例。 |
version | HTTP 协议版本 |
url | 已读取资源的 URL,通常用于确定是否进行了重定向。 |
headers | 响应的头部信息 |
status | 返回状态码 |
reason | 返回的原因短语 |
debuglevel | 一个调试钩子。如果debuglevel大于零,状态信息将在读取和解析响应数据时打印输出到 stdout。 |
closed | 如果为 True ,说明连接已关闭。 |
http.server
这个模块定义了用于实现 HTTP 服务器的类。
http.cookies
一种 HTTP 状态的管理机制。它既支持简单的纯字符串形式的 cookie,也为任何可序列化数据类型的 cookie 提供抽象。
http.cookiejar
定义了用于自动处理 HTTP cookie 的类。这对访问需要小段数据 —— cookies 的网站很有用,这些数据由 Web 服务器的 HTTP 响应在客户端计算机上设置,然后在以后的 HTTP 请求中返回给服务器。
参考代码
综合例子
from http.client import HTTPSConnection
''' 连接网址'''
site = HTTPSConnection('www.xxx.com')
site.request('GET','/') # 请求方式,API接口
site = site.getresponse() # 响应类
''' 状态码 '''
print(site.status)
''' 头部信息 '''
print(site.getheaders())
''' 解码 '''
print(site.read().decode('utf-8'))
''' 关闭连接 '''
site.close()
POST发送
import http.client
import urllib
# 使用 POST 请求,提交的数据放在 body 部分
params = urllib.parse.urlencode({'@number':12524,'@type':'issue','@action':'show'})
print('==>',params)
# post 请求数据,要带上 Content-type 字段,以告知消息主体以何种方式编码
headers = {'Content-type':'application/x-www-form-urlencoded','Accept':'text/plain'}
conn = http.client.HTTPConnection('bugs.python.org')
conn.request('POST','/',params,headers)
response = conn.getresponse()
# 访问被重定向
print(response.status,response.reason)
print(response.read().decode('utf-8'))