如何在给出HTTP post请求时传递Json对象中的变量

问题描述 投票:3回答:2

我试图将json对象传递给我的一个接受JSON数据的URL。

以下作品:

payload='{"message": "hello"}'
headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
r = requests.post(url, data=payload, headers=headers)

r.text给了我“你好”

但是当我试图传递变量时

s="hello"
payload='{"message":' +str(s)+ '}'
headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
r = requests.post(url, data=payload, headers=headers)

以上都没有用。当我尝试加载为JSON时,它也会给我带来错误

payload=json.loads(payload)
JSONDecodeError: Expecting value: line 1 column 12 (char 11)

我也希望通过b'blahblah'作为JSON消息。由于传递字符串对我没有用,我没有尝试传递字节格式。

请指教

python json http python-requests google-cloud-functions
2个回答
4
投票

您应该在JSON对象中的字符串周围包含双引号:

payload='{"message":"' +str(s)+ '"}'

所以payload将成为'{"message": "hello"}'

否则payload将使用您当前的代码成为'{"message": hello}'


0
投票

使用json.dumps

payloads = {"message": s}

r = requests.post(url, data=json.dumps(payloads), headers=headers)
© www.soinside.com 2019 - 2024. All rights reserved.