2017-02-21 40 views
0

我的问题是,我一直在收到“响应[401]”,这是我在网上看到的,意味着存在身份验证错误。我试图通过在Python中的其他调用来创建一个新用户。我对Python/Rest非常陌生,所以我确信我缺少一些东西。Python中的身份验证问题/其他问题

下面是我的代码:

import requests 
import json 
import base64 

print("Script Running") 
username = ‘UN’ 
password = ‘PW’ 
tempString = username + ':' + password 
encodedString = base64.b64encode(tempString.encode()) 
data = {"name": "changeUser", "password": "12345","emailAddress": "[email protected]","displayName": "changeUser","notification" : "false"} 
url = "http://myserver.atlassian.net/rest/api/2/user/" 
headers = {'Authentication': 'Basic ' + tempString, 'Content-type': 'application/json', 'Accept': 'application/json', 'X-Atlassian-Token': 'no-check' } 

print(encodedString) 
r = requests.post(url, json.dumps(data), headers) 
print(r) 
print("Script Ending") 

encodedString回报b'stringofstuff =” 打印(R)返回响应[401]

+0

您是否验证过验证信息对实际服务有效? – Andrew

+0

是的。我能够对实例使用身份验证凭证。我已经加倍检查了所有拼写,以确保它不是拼写错误 – BlueBaroo

+0

您可以使用curl来处理查询并查看响应。 curl -D- -u UN:PW -X POST -H“Content-Type:application/json”https://myserver.atlassian.net/rest/api/2/user -d'{“name”:“ changeUser“,”password“:”12345“,”emailAddress“:”[email protected]“,”displayName“:”changeUser“,”notification“:”false“}' – Jesse

回答

0

要求对所有的这个选项。我只是使用

r = requests.post(url, json=data, auth=(username, password)) 
+0

当我使用这种方法时,响应[404]而不是401.这不意味着网站不可用/没有响应 – BlueBaroo

+0

当问题与找不到页面完全无关时,Jira有时会返回404。响应中是否有errorMessages字段? – Jesse

0

您是否使用单独的HTTP客户端进行此调用?尝试使用邮递员使用相同的数据拨打电话,以便确定从哪里开始寻找。

另外 - 你应该用encodedString做什么?唯一一次使用它是在打印电话。

+0

我已经使用PostMan,但没有任何运气。现在encodedString只是将tempString改为base64。当我在调用中更改了encodedString的tempString时,它会引发错误 – BlueBaroo

+1

如果您无法通过Postman调用服务器,则应该在担心代码之前开始排除身份验证方法的问题。 – hamiltoncw

+0

我已经使用邮递员进行GET调用,但从来没有发布。我在Postman中使用的凭据与我在代码中使用的凭据相同,因此不应该存在凭据问题 – BlueBaroo