web-dev-qa-db-ja.com

HTTP POSTリクエストを与えるときにJsonオブジェクトで変数を渡す方法

JSONデータを受け入れるURLの1つに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メッセージとして渡したかったのです。文字列を渡してもうまくいかなかったので、バイト形式を渡そうとしませんでした。

アドバイスをお願いします

4
python_interest

JSONオブジェクトの文字列を二重引用符で囲む必要があります。

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

payload'{"message": "hello"}'になるようにします。

そうでない場合、payloadは現在のコードで'{"message": hello}'になります。

5
blhsing

recは、値を出力したい変数です。

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

使用する json.dumps

payloads = {"message": s}

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