conn.request()拼接URL参数时“字段必须为整数”报错的解决方法
问题根因
当前拼接生成的接口路径实际效果是/fixtures?season=2020&team==33,和预期的/fixtures?season=2020&team=33差了一个等号。
原因是调用urlencode时传入的字典键是空字符串"",该函数的编码规则是将字典的键值对拼接为键=值格式,空键自然会生成=33的字符串内容,和前面硬编码的team=拼接后就形成了team==33的错误参数。
接口解析时拿到的team参数值是字符串=33,不符合整数格式要求,因此抛出对应参数错误。
正确实现方式
- 推荐全参数统一编码:把硬编码的查询参数和动态变量全部放入字典,交由
urlencode统一处理,避免手动拼接的格式错误:
query_params = {"season": "2020", "team": required_id} request_path = "/fixtures?" + urlencode(query_params) r1 = conn.request("GET", request_path, headers=headers)
这种方式无需手动处理特殊字符转义,也不会出现键值对不匹配的拼接问题。
- 若需要保留已有硬编码的路径片段,无需调用
urlencode处理单个整数值,直接将整数类型的team_id转为字符串拼接即可:
r1 = conn.request("GET", "/fixtures?season=2020&team=" + str(required_id), headers=headers)
- 需要规避的错误用法:不要给
urlencode传入空键的字典,否则必然生成={值}格式的无键内容,造成拼接错位。
内容的提问来源于stack exchange,提问作者Vianu
相关产品推荐
相关产品推荐

