TypeError: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type s

"在将Python2.x的urllib2库替换为urllib.request时遇到错误,TypeError提示POST数据不能为字符串类型。解决方案是在编码数据时使用encode('utf-8')将其转换为字节。通过修改`data=urllib.parse.urlencode(submit_data).encode("utf-8")`解决了问题,确保了POST数据的正确格式。"
摘要由CSDN通过智能技术生成

我在是 学习的时候,代码中是python2.x 的版本用的是urllib2 库
我是改为urllib.requst

运行是提示

TypeError: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str

解决办法。在 # 编码
data = urllib.parse.urlencode(submit_data).encode(“utf-8”)

# 编码(这个本来没有指定格式编码)
# data = urllib.parse.urlencode(submit_data)
# 加上encode("utf-8")
data = urllib.parse.urlencode(submit_data).encode("utf-8")


# 构造请求头,创建请求对象
headers = {
    "Accept" : "application/json, text/plain, */*",
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.7 Safari/537.36",
    "Accept-Language" : "zh-CN,zh;q=0.8"
}

req = urllib.request.Request(url,data,headers)

# 发送请求
response = urllib.request.urlopen(req)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值