You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用urllib3调用API时如何正确获取响应状态码

问题根因

你无法读取到响应状态、触发报错的核心原因有两点,附带代码里的其他易引发问题的错误一并说明:

  1. 代码存在多处语法/参数错误,导致请求根本没有正常返回标准响应对象,你拿到的resp不是urllib3的HTTPResponse实例,自然不存在status属性:
    • url参数值漏写字符串引号,你写的url = https://zoola.com/content属于非法Python语法,正确的URL必须是字符串格式'https://zoola.com/content',不要把你命名为https的连接池实例和URL里的HTTPS协议前缀搞混
    • 所有用到joy.txt的位置都没加字符串引号:包括请求体字典a里的"name": joy.txt、fields参数里的"file": (joy.txt, file)、"filename": joy.txt,这些位置的joy.txt都是字符串值,必须加引号包裹
  2. 就算拿到了正常的响应对象,你写的判断逻辑也不成立:urllib3的响应状态码status是整数类型,不是字符串,和字符串"201"做相等判断永远不会匹配成功。
修正后的可运行代码
import urllib3
import ssl
import json

# 初始化连接池
urllib3.disable_warnings()
# 建议把连接池实例名改为http,避免和URL里的https协议头混淆
http = urllib3.PoolManager(cert_reqs=ssl.CERT_NONE)

# 构造请求参数,文件对象建议用上下文管理器自动释放资源
with open("joy.txt", "rb") as f:
    req_attr = {"name": "joy.txt", "parent": {"id": 4567}}
    # 传multipart表单时不要手动设置Content-Type请求头,urllib3会自动生成带boundary的合法头
    headers = {}  # 替换为你实际需要的其他请求头,比如鉴权头

    try:
        resp = http.request(
            method='POST',
            url='https://zoola.com/content',
            headers=headers,
            fields={
                "attributes": json.dumps(req_attr),
                "file": ("joy.txt", f),
                "filename": "joy.txt"
            }
        )
        # 正确读取整数类型的状态码做判断
        if resp.status == 201:
            # 执行201状态对应的成功逻辑
            resp_text = resp.data.decode('UTF-8')
            print("创建成功,响应内容:", resp_text)
        else:
            # 其他状态码的异常处理
            print(f"请求返回异常状态:{resp.status},响应内容:{resp.data.decode('UTF-8')}")
    except Exception as e:
        # 捕获请求发起阶段的异常(网络错误、连接超时、SSL错误、参数构造错误等),这类场景不会返回正常响应对象
        print(f"请求发起失败,错误信息:{str(e)}")
额外注意点
  • 不要手动在headers里设置Content-Type: multipart/form-data,urllib3检测到fields里包含文件元组时,会自动生成带随机分隔符(boundary)的Content-Type头,手动设置会导致服务端无法正常解析表单内容
  • 所有网络请求逻辑必须加异常捕获,网络波动、服务端宕机、参数错误都可能导致请求直接抛出异常,这类场景下不会生成响应对象,不做捕获会直接中断程序
  • 读取本地文件时优先使用with open()上下文管理器写法,会自动关闭文件释放资源,避免文件句柄泄漏

内容的提问来源于stack exchange,提问作者Baba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:57:11