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

Python调用COVID-19 API每日更新时遇TypeError参数错误求助

解决TypeError: request()参数数量不匹配的问题

问题描述

我正在尝试编写Python代码,每日向COVID-19 API发送GET请求,获取卡塔尔的新冠确诊病例实时数据。但当我添加today变量后,触发了这个错误:TypeError: request() takes from 3 to 5 positional arguments but 6 were given。以下是我的代码:

import http.client
import mimetypes
today = datetime.today()
today = today.isoformat()
conn = http.client.HTTPSConnection("api.covid19api.com")
payload = ''
headers = {}
conn.request("GET", "/live/country/qatar/status/confirmed/date/",today, payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

解决方案

嘿,这个问题其实是你对http.client.HTTPSConnection.request()方法的参数传递方式搞错啦!让我一步步帮你修正:

1. 错误根源

request()方法的正确参数签名是:request(method, url, body=None, headers={})——它最多只接受4个位置参数(包含方法自身的self的话是5个,但我们调用时只需要传前4个),而你错误地把today当成独立参数传递,导致总参数数超标。你真正需要做的是把today拼接在请求URL的末尾,作为路径的一部分。

2. 修正后的完整代码

另外我还发现你漏导入了datetime模块,这也会触发运行错误,一起补上:

import http.client
import datetime  # 补上遗漏的datetime模块导入
import mimetypes

# 简化日期格式的代码写法
today = datetime.today().isoformat()
conn = http.client.HTTPSConnection("api.covid19api.com")
payload = ''
headers = {}

# 把today变量拼接进请求URL中,而不是单独传参
request_url = f"/live/country/qatar/status/confirmed/date/{today}"
conn.request("GET", request_url, payload, headers)

res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

3. 额外优化提示

  • 如果你没有用到mimetypes模块的功能,可以直接删掉这个导入语句,让代码更简洁。
  • 注意API对日期格式的要求,isoformat()生成的格式刚好符合大多数REST API的日期参数规范,不用额外调整。

这样修改后,参数数量就符合方法要求了,也能正确传递日期参数给API,应该就能正常获取数据啦!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:47:34