2017-03-04 56 views
0

所以我必須從一個設備到我的燒瓶服務器的HTTP POST,發送以下信息:Python中添加分隔符來變

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

從燒瓶中的服務器,然後我試圖把在其他設備上我網絡:

app = Flask(__name__) 

@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!' 

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

唯一的問題是在我發送一個HTTP請求中的撇號分隔符被刪除。我怎樣才能得到一個變量添加分隔符?

+0

你能告訴我們什麼是你的'content'變量的內容後,你'print'呢? – Szabolcs

+0

'{「on」:「false」}' –

+0

試過嗎?內容=「'」+內容+「'」 – Szabolcs

回答

0

使用這樣的事情:

content = "'" + str(request.get_json()) "'"

,或者您也可以嘗試str.format方式:

content = "'{}'".format(str(request.get_json()))

希望它能幫助。

編輯:

轉換格式化之前request.get_json()來str的返回dict

+0

我得到的錯誤'TypeError:不能轉換'字典'對象隱式地str'我應該嘗試eval還是別的嗎? –

+0

你想發送'內容'作爲字典或純字符串?如果是純字符串,那麼你首先必須將它轉換成一個字符串,我剛剛在我的答案中錯過了,但現在糾正了。 – Szabolcs

0

不確定爲什麼您需要發送帶引號的字符串。

也許這些幫助之一。

In [1]: d = {"on":"false"} 

In [2]: repr(d) 
Out[2]: "{'on': 'false'}" 

In [3]: import json 

In [4]: s = json.dumps(d) 

In [5]: str(s) 
Out[5]: '{"on": "false"}' 

In [6]: repr(s) 
Out[6]: '\'{"on": "false"}\''