Python请求的数据参数工作不正常

2024-04-18 20:05:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用请求http://docs.python-requests.org/en/latest/

我正在尝试做一个简单的POST请求,添加一些额外的标题。我不明白下面的行为。你知道吗

opener = requests.Session()
data = {"payload" : { "id": 1, "pwd": "mypass"}
headers = {"Content-Type":"application/json"}
url = "https://mysite.com/login"    

# THIS WORKS
opener.post(url, data)
# THIS DOES NOT WORK
opener.post(url, json.dumps(data))

# THIS DOES NOT WORK
opener.post(url, data=data, headers=headers)
# THIS WORKS
opener.post(url, data=json.dumps(data), headers=headers)

似乎post方法通常需要一个dict,当我将该dict转换为string时,它就不起作用了。我可以用前者登录,但不能用后者。你知道吗

但是,当我提供额外的头信息时,post方法的工作方式似乎与extact相反,它需要一个字符串作为数据。在服务器端,第一个版本抛出一个错误,而第二个版本处理头。你知道吗

这种行为的原因是什么?你知道吗


Tags: 方法jsonurldatanotopenerthispost