2016-06-23 4 views
0

Ich versuche, eine grundlegende Implementierung der Synchroteam API mit Python-Anforderungen zu arbeiten. Ich war in der Lage, eine Verbindung mit cURL als Proof of Concept zu etablieren und alle Daten bekommen ich wollte, aber Anfragen mit ich in der Lage bin mit meinen Zugangsdaten in die Website zu bekommen, aber alles, was ich bekommen ist:Warum bekomme ich 500 Fehler bei der Verwendung von Python-Anfragen, aber nicht cURL

500 
text/html; charset=utf-8 
https://apis.synchroteam.com/Api/v1/user/list 

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title>Error</title> 
</head> 
<body> 
    <h2> 
     An error occurred while processing your request. 
    </h2> 
</body> 
</html> 

Process finished with exit code 0 

bei der Verwendung von curl mit dieser Linie alles, was die richtigen Informationen liefert:

curl -u domain:APIKEY -H "Accept: application/json" -H "Content-Type: application/json" https://apis.synchroteam.com/Api/v1/user/List 

Mein kleines bisschen python-Code ist dies:

import requests 


apiurl = 'https://apis.synchroteam.com/Api/v1/user/list' 
login = ("domain", "APIKEY") 
headers = {'Content-Type': 'application/json'} 

def run(): 
    r = requests.get(apiurl, auth=login, headers=headers) 

    print r.status_code 
    print r.headers['Content-type'] 
    print r.url 
    print r.text 

run() 

Alle der Synchroteam Dokumentation Beispiele in PH hat P, aber ich kann keinen Grund sehen, warum ich Python nicht benutzen könnte. Die Dokumente sind hier: http://api.synchroteam.com/rest.php

Jeder Einblick wäre toll, ich hoffe wirklich, es ist nur etwas kleines Ich vermisse. Danke.

+0

Haben Sie versucht, den Header 'Accept:' ebenfalls zu setzen? – ig0774

+0

Ich habe nicht. Irgendeine Idee, was ich es akzeptieren sollte? Ich bin mir nicht sicher, woran es gerade hängt. Sorry für die grundlegende Frage, es ist das erste Mal, dass ich HTTP oder externe APIs verwende. –

+0

UPDATE: Ich habe das nicht versucht. Mir ist klar, dass dies der Curl-Linie ähnelt. Vielen Dank, das hat mich stundenlang gestört. –

Antwort

0

Dies ist der Python-Code, den ich mit Postman erzeuge. Ich bin sicher, es wird dir helfen!

import requests 

url = "https://apis.synchroteam.com/Api/v1/User/list" 

payload = "{\n \"status\":\"1\"\n}" 
headers = { 
'content-type': "application/json", 
'accept': "application/json", 
'authorization': "Basic ZGVtbzoxMjEyOThucDIwMDM=", 
'cache-control': "no-cache", 
'postman-token': "1a3839b6-db5b-0c07-be1a-2816f491476c" 
} 

response = requests.request("GET", url, data=payload, headers=headers) 

print(response.text) 

Ändern Sie einfach die Auth!
Nick

+0

Es gibt keinen Hinweis auf die Frage. – lulyon

+0

Danke für die Antwort, ich konnte das mit Hilfe von ig0774 herausfinden. Alles, was ich brauchte, war headers = {'Accept': 'application/json'} und das hat alles repariert. Ich muss vielleicht später noch einige erweiterte Header sehen. –

Verwandte Themen