2017-04-11 5 views
3

Ich habe auf viele Fragen ähnlich wie meine, aber ich konnte keine Lösung finden.Python Anfragen POST 400 Fehler

Ich verwende Anfragen, um eine POST-Anfrage durchzuführen. Ich habe viele Kombinationen in der Anfrage ausprobiert, aber nichts gibt ein 201 in Ordnung.

Hier ist mein Code:

import json 
import requests 

if __name__ == '__main__': 

    headers = {'content-type' : 'application/json'} 
    url = "http://myserver/ext/v3.1/test_device" 
    message = {"atribute_a": "value", "atribute_b": "valueb"} 
    params = {"priority":"normal"} 

    r = requests.post(url, params=params, headers=headers, data = json.dumps(message)) 
    print(r) 

ich auch withou json.dumps habe versucht, aber es gibt mir auch 400 schlecht Anfrage. Ich habe auch versucht, die Parameter direkt zur URL hinzuzufügen wie: ...? Priorität = normal aber ohne Erfolg.

+0

Gibt es nicht soll ein Komma zwischen params und headern in requests.post sein? –

+0

ja @GauravOjha natürlich. Ich habe mit einem Komma getestet. nur eine schlechte Kopie & vergangene – lmbcerqueira

+0

Haben Sie versucht, Daten = Nachricht direkt anstelle von json.dumps zu verwenden? –

Antwort

4

Basierend auf den Kommentaren erwartet Ihr Server Daten tatsächlich als ein mit einem String versehenes JSON-Objekt. Was die params betrifft, so würde es höchstwahrscheinlich helfen, wenn sie als ein Tupel von Tupeln deklariert sind (oder ein dict von dicts)

Versuchen Sie, die folgenden -

headers = { 
    'content-type': 'application/json', 
} 

params = (
    ('priority', 'normal'), 
) 

data = { 
    "atribute_a": "value", 
    "atribute_b": false 
} 

requests.post(url, headers=headers, params=params, data=str(data))