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

如何在Python 3中运行基于Python 2编写的API请求代码?

Python3 替代 urllib2 发起API请求的方案

Python3 里确实没有 urllib2 模块,它的功能被拆分到了 urllib.request 模块中。同时还要注意Python3与Python2在字符串编码、print语法上的差异,以下是适配后的Python3版本代码:

from urllib.request import Request, urlopen
import json

# 用字典构造请求数据,再转成JSON字符串,比硬写字符串更稳妥
values = {
    "username": "usuario@api.com",
    "access_key": "NWNmMTczNGYtZjQ0OS00MjgwLTg51WItYjNiNWRiNGUxMjIzOnM/WDkqPypfVFN="
}

headers = {
    'Content-Type': 'application/json',
    'Partner-Id': '[nombre de la aplicación que estás integrando]'
}

# Python3中Request的data参数需要是bytes类型,先转JSON再编码
data = json.dumps(values).encode('utf-8')
request = Request('https://private-anon-897d0a33f9-siigoapi.apiary-mock.com/auth', data=data, headers=headers)

response_body = urlopen(request).read()
# 把响应的bytes转成字符串后打印
print(response_body.decode('utf-8'))

关键改动说明:

  • 导入路径从 urllib2 改为 urllib.request
  • Python3要求Request的data参数必须是bytes类型,因此用json.dumps()将字典转为JSON字符串后,再通过encode('utf-8')转成bytes
  • 接口响应的read()方法返回bytes,需要用decode('utf-8')转成字符串再处理
  • Python3的print是函数,必须添加括号
  • 用字典构造请求数据再转JSON,比直接写字符串更易维护,还能避免手动编写JSON的格式错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:52:34