gpt4 book ai didi

python - 循环问题 : Attempt to send form-url-encoded data causes TypeError: can't concat bytes to str, 以及对后者的修复破坏了前者

转载 作者:行者123 更新时间:2023-12-01 08:17:25 25 4
gpt4 key购买 nike

当我尝试遵循此问题的答案 Python requests module sends JSON string instead of x-www-form-urlencoded param string 时并将字典传递给 urlopen,我收到此问题中描述的错误:Python 3.6 urllib TypeError: can't concat bytes to str

基于第一个问题答案中的推荐的代码:

req = Request(url, method='POST', data={"ID": theId})
r = urlopen(req)

当我尝试应用第二个问题中接受的答案并使用它时(类似于我的原始代码)...

urllib.request.urlopen({api_url}, data=bytes(json.dumps({"ID": theId}), encoding="utf-8"))

...我又回到了第一个问题开始的地方,因为在 data 参数中传递 json 字符串会强制发送 application/json而不是我正在寻找的 x-www-form-urlencoded:

有办法摆脱这个圆形陷阱吗?

最佳答案

通过调用urllib.parse.urlencode将字典转换为字符串,然后显式设置内容类型来修复:

    postparam = urllib.parse.urlencode({"ID": theId}).encode('utf-8')
req = Request(url, method='POST', data=postparam)
req.add_header("content-type", "application/x-www-form-urlencoded")
r = urlopen(req)

关于python - 循环问题 : Attempt to send form-url-encoded data causes TypeError: can't concat bytes to str, 以及对后者的修复破坏了前者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54897849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com