2017-03-04 1 views
-3

Wenn ich dieses Programm ausführen Senden Sie eine HTTP-Post in meinem Flask Server zu tun, die ich zurückkehrt eine 200-Antwort wissen:Flask Drucken funktioniert nicht

import requests 
import json 
dump= '{"on": false}' 
r = requests.post('http://127.0.0.1:5000', data=dump, 
        headers={'Content-Type': 'application/json'}) 

Und mein Flask Servers Code:

from flask import Flask 
from flask import request, jsonify 
import requests 

app = Flask(__name__) 

@app.route('/', methods=['GET', 'POST']) 
def signal(): 
    if request.method == 'POST': 
     content = request.get_json() 
     return jsonify(content) 
     print(jsonify(content)) 
     r = requests.put("http://192.168.1.102/api/F5La7UpN6XueJZUts1QdyBBbIU8dEvaT1EZs1Ut0/lights/5/state/", jsonify(content)) 
    else: 
     return 'Hello, world!' 

if __name__ == '__main__': 
    app.run(debug=True) 

Ich möchte die Daten auf der Konsole drucken und dann über HTTP PUT an eine Bridge im Netzwerk senden. Keine von beiden funktioniert und ich bin mir nicht sicher warum.

+4

'return' ** beendet die Funktion **. Alles, was Sie nach der Rückkehr versuchen, wird nie erreicht. Wenn also der Code 'jsonify (Inhalt zurückgeben) erreicht 'ist es egal, welcher Code folgt, wird dieser Code niemals ausgeführt. –

Antwort

-1

Sie benötigen

@app.route('/', methods=['GET', 'POST']) 
def signal(): 
    if request.method == 'POST': 
     content = request.get_json() 
     print(content) 
     r = requests.put("http://192.168.1.102/api/F5La7UpN6XueJZUts1QdyBBbIU8dEvaT1EZs1Ut0/lights/5/state/", content) 
     return jsonify(content) 
    else: 
     return 'Hello, world!' 

Hinweis am Ende der Funktion zurückzukehren: Sie sind wahrscheinlich über mit der jsonify Funktion, da die jsonify() Funktion in Kolben flask.Response() Objekt zurückgibt, und nicht eine Zeichenfolge JSON, dass Sie würde POST oder PUT zu einem anderen Dienst.

+0

Also würde ich nur jsonify verwenden wollen, wenn ich eine Antwort zurück zum sendenden Gerät sende? –

+0

Um den Client eine HTTP-Antwort anfordern, ja. –

+0

Ok, fair genug. Ich hätte auch die Rückkehr verstehen sollen, Entschuldigung. Meine letzte Sache ist das ist eine Möglichkeit, den HTTP-POST von "{" on ": false} zu halten, wenn die Apostrophe entfernt werden, was bedeutet, dass die PUT nicht funktioniert. –

Verwandte Themen