Python 会话请求错误地解析了数据参数

Python Session request is parsing the data argument wrongly

我正在尝试向服务器发送请求以及 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)

有人可以帮忙吗? 谢谢

在发送 json 会话时,您还需要 json.dumps(data)

所以会是

r = s.get(url, headers=headers, data=json.dumps(data), verify=False)

没有

r = s.get(url, headers=headers, data=data, verify=False)