如何解决json.dumps的str问题?

问题描述 投票:0回答:1

您好,有人可以帮我这个吗?

TypeError: POST data should be bytes or an iterable of bytes. It can not be of type str.

import json
import urllib.request
from urllib.request import urlopen

postdata = {
    'datetime': str(calendar.timegm(time.gmtime())),
    'sensorId': "1",
    'tempRecord': str(read_temp())
}

req = Request(url)
req.add_header('Content-Type','application/json')
data = json.dumps(postdata)

response = urlopen(req,data)
python json string binary
1个回答
0
投票

你应该使用:

response = urlopen(req, data.encode())

为什么?

因为json.dump(postdata)返回一个str对象,

urlopen期待一个bytes对象。

所以你必须将datastr转换为bytes,你可以使用encode

© www.soinside.com 2019 - 2024. All rights reserved.