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