如何使用auth令牌并使用Python提交数据请求.POST?

2024-06-24 13:19:54 发布

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

使用WheniWork的api,我需要使用令牌进行身份验证,还需要发送数据来创建新用户。我发送的参数的顺序或名称请求.post()问题?在

如果我只是使用GET来获取信息,我可以让url包含我要查找的内容,然后发送一个有效负载,即令牌。例如:

url = 'https://api.wheniwork.com/2/users/2450964'
payload = {"W-Token": "ilovemyboss"}
r = requests.get(url, params=payload)
print r.text

但是,当我尝试添加新用户时,要么无法进行身份验证,要么无法正确传递数据。api参考显示了使用cURL的以下格式:

^{pr2}$

以下是我在python(2.7.10)中使用请求编写的内容:

url = 'https://api.wheniwork.com/2/users'
data={'first_name':'TestFirst', 'last_name':  'TestLast','email':'test@aol.com'}
params={"W-Token": "ilovemyboss"}
r = requests.post(url, data=data, params=params)
print r.text

有人能解释一下数据(用户)是否/如何与身份验证(令牌)分开发送吗?在


Tags: 用户httpscomtoken身份验证apiurl内容
2条回答

我们可以通过使用json.dumps将数据字典转换为JSON字符串来解决上述问题。在

  data={'first_name':'TestFirst', 'last_name':  'TestLast','email':'test@aol.com'}
  r = requests.post(url, data=json.dumps(data), params=params)
  print r.text

我发现了问题! 数据(用户dict)需要用引号括起来。我不确定他们的API是否需要一个字符串,或者请求是如何工作的,或者是什么。但解决办法是:

url = 'https://api.wheniwork.com/2/users'
data = "{'first_name':'TestFirst', 'last_name':  'TestLast','email':'test@aol.com'}"
params = {"W-Token": "ilovemyboss"}
r = requests.post(url, data=data, params=params)
print r.text

相关问题 更多 >