
Python 的 urllib3 库是一个强大的HTTP客户端库,用于发送HTTP请求和处理HTTP响应。它提供了连接池、文件上传、会话管理等功能,支持HTTP/1.1、连接复用和持久连接。urllib3 还提供了多种异常类型,用于处理请求过程中可能出现的错误。它是许多高阶HTTP客户端库的基础,如 requests 库,用于实现更复杂的网络通信和数据传输任务。
pip install urllib3

import urllib3import jsonhttp = urllib3.PoolManager()http = urllib3.PoolManager(timeout=3.0) # 让所有的request都遵循一个timeout限时# 创建PoolManager对象生成请求,# 由该实例对象处理与线程池的连接以及线程安全的所有细节def req(url):try:# urlurl = url# 请求头# header = {# 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64)',# 'Host':'httpbin.org'# }# body# 请求体data = {'word':'hello'}data = json.dumps(data).encode()# json.dumps方法可以将python对象转换为json对象# body# 二进制文件# with open('xxx.jpg','rb') as f2:# data = f2.read()# fields# 使用multipart/form-data编码方式上传文件# 可以使用和传入Form data数据一样的方法进行# 并将文件定义为一个元组的形式# (file_name,file_data):# with open('1.txt','r+',encoding='UTF-8') as f:# file_read = f.read()# request(self, method, url, fields=None, headers=None, **urlopen_kw)response = http.request('GET', url) # get方式请求response = http.request('POST', url, body=data, headers=header)response = http.request('POST', url, body=data, headers=header, timeout=3.0) # 限时response = http.request('POST', url, body=data, headers=header, retries=5) # 重试,默认3次response = http.request('POST', url, body=data, headers=header, redirect=False) # 重定向response = http.request('POST', url, fields={'filefield':('1.txt', file_read, 'text/plain')})response_status = response.statusresponse_data = response.data.decode('utf-8')print(response_status) # 获得状态码print(response_data) # html源码(utf-8解码)text = json.loads(response_data)# 如果返回 {"msg":"ok"}msg = text["msg"]print(msg)except:print("失败")print(response_status)raisedef run():try:url = ""r = req(url)print(r)except:print(r)if __name__ == "__main__":run()