我正在嘗試向服務器發送請求,并將 json 作為資料引數。如果我使用直接請求,它可以作業,但是當我使用會話時,我會收到一個錯誤的請求。
這有效:
import request
url = "https://whatever/api/v1/dosomething"
data = {"client":{"id":100},"job":{"name":"software developer","field_id":[1,2,3],"level":20}}
headers = {'Content-type': 'application/json'}
r = requests.get(url, data=json.dumps(data), headers=headers)
當我檢查 r.request.body 時,我得到以下資訊:
'{"client": {"id": 100}, "job": {"name": "software developer", "field_id": [1, 2, 3], "level": 20}}'
這不起作用:
但是,當我嘗試使用 Session 時, request.body 會搞砸。
url = "https://whatever/api/v1/dosomething"
data = {"client":{"id":100},"job":{"name":"software developer","field_id":[1,2,3],"level":20}}
headers = {'Content-type': 'application/json'}
s = requests.Session()
r = s.get(url, headers=headers, data=data, verify=False)
由于上面的代碼,我收到了一個錯誤的請求,當我檢查 r.request.body 時:
client=id&job=name&job=field_id&job=level
我認為我收到了一個錯誤的請求,因為 request.body 以錯誤的方式決議,但我沒有找到如何正確決議它。
我已經嘗試使用:
req = Request('GET', url, data=data, headers=headers)
prepped = req.prepare()
resp = s.send(prepped)
有人可以幫忙嗎?謝謝
uj5u.com熱心網友回復:
您還需要json.dumps(data)在發送帶有會話的 json 時。
所以會是
r = s.get(url, headers=headers, data=json.dumps(data), verify=False)
不是
r = s.get(url, headers=headers, data=data, verify=False)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429669.html
上一篇:php子域會話共享無法正常作業
