2017-02-21 2 views
0

Mein Problem ist, dass ich immer eine "Response [401]" bekomme, die ich von dem, was ich online gesehen habe, bedeutet, dass es einen Authentifizierungsfehler gibt. Ich versuche, einen neuen Benutzer über Ruheaufrufe in Python zu erstellen. Ich bin ziemlich neu in Python/Rest, also bin ich sicher, dass ich etwas vermisse.Authentifizierungsproblem in Python/Rest

Unten ist mein Code:

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 kehrt b'stringofstuff print ‚= (r) liefert Response [401]

+0

Haben Sie überprüft, dass die Authentifizierungsinformationen für den tatsächlichen Dienst gültig sind? – Andrew

+0

Ja. Ich kann die Authentifizierungsinformationen für die Instanz verwenden. Ich habe die Rechtschreibprüfung zweimal überprüft, um sicherzustellen, dass es sich nicht um einen Rechtschreibfehler handelt. – BlueBaroo

+0

Sie können curl verwenden, um mit Ihrer Abfrage herumzuhantieren und die Antworten zu sehen. curl -D- -u UN: PW -X POST -H "Inhaltstyp: application/json" https://myserver.atlassian.net/rest/api/2/user -d '{"name": " changeUser "," Passwort ":" 12345 "," emailAddress ":" [email protected] "," displayName ":" changeUser "," Benachrichtigung ":" false "} ' – Jesse

Antwort

0

Anfragen hat Optionen für all dies. Ich würde einfach verwenden

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

Wenn ich diese Methode verwendet habe, landete ich eine Antwort [404] anstelle von 401. Bedeutet dies nicht, dass die Site nicht verfügbar ist/nicht antwortet – BlueBaroo

+0

Jira gibt 404 manchmal zurück, wenn das Problem völlig unabhängig von der Seite ist, die nicht gefunden wurde. Gibt es ein Feld errorMessages in der Antwort? – Jesse

0

Haben Sie einen separaten HTTP-Client verwendet, um diesen Anruf zu tätigen? Verwenden Sie Postman, um den Anruf mit den gleichen Daten zu tätigen, damit Sie festlegen können, wo Sie zuerst suchen sollen.

Auch - Was genau sollen Sie mit codedString tun? Die einzige Zeit, die Sie verwenden, ist im Druckanruf.

+0

Ich habe PostMan benutzt, hatte aber auch kein Glück damit. Im Moment wird encodedString nur tempString zu base64 geändert. Wenn ich tempString für codedString im Aufruf austausche, wird ein Fehler ausgegeben – BlueBaroo

+1

Wenn Sie den Server nicht über Postman anrufen können, sollten Sie mit der Fehlersuche beginnen, bevor Sie sich über Ihren Code Gedanken machen. – hamiltoncw

+0

Ich habe Postman verwendet, um GET-Anrufe vor, aber nie POST zu machen. Die Anmeldeinformationen, die ich in Postman verwendet habe, sind dieselben, die ich auch in meinem Code verwendet habe. Es sollte also kein Problem mit den Anmeldeinformationen geben – BlueBaroo

Verwandte Themen