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

yb3bgrhw  于 2023-01-12  发布在  Python
关注(0)|答案(3)|浏览(158)

我试图将一个json对象传递给我的一个URL,它接受JSON数据。
下面的代码可以工作:

import requests

import json

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消息传递,因为传递字符串对我来说不起作用,所以我没有尝试传递字节格式。
请指教

oxcyiej7

oxcyiej71#

应该在JSON对象中的字符串两边加上双引号:

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

因此payload将变成'{"message": "hello"}'
否则,payload将变为当前代码中的'{"message": hello}'

bzzcjhmw

bzzcjhmw2#

使用json.dumps

payloads = {"message": s}

r = requests.post(url, data=json.dumps(payloads), headers=headers)
qnyhuwrf

qnyhuwrf3#

rec是要打印其值的变量

url = "abc.com"
payload = '{"text":"' +str(rec)+ '"}'
r = requests.post(url,data=payload)

相关问题