我想通過一個post請求從計算機發送一個JSON消息到另一個。 發送該消息的腳本如下:正如我以前使用過它,它工作得很好在以下情況下,爲什麼我無法解碼JSON消息?
message = {'station':'turn on'}
res = rest.send('POST', server_addr + "/newstation", json.dumps(message), {'Content-Type': 'application/json'})
的rest.send(...)方法應該是正確的。
發送POST請求的PC運行Linux,而接收者運行Win 8,如果這意味着什麼的話。
在接收機器,我有以下幾點:
@app.route('/newstation', methods = ['POST'])
def new_station():
j_data = request.get_json()
d = decode_data(j_data)
其中decode_data(j_data)是以下
def decode_data(j_data):
d = json.loads(j_data)
return d
我的問題是:每當我嘗試發送從第一POST請求機器的響應是「內部服務器錯誤」,並在服務器上返回錯誤的機器是「TypeError:期望的字符串或緩衝區」。 現在我想這可能是字符串編碼的問題。
收到了發佈的請求,我可以毫無問題地打印json內容,當我嘗試解碼時會出現問題。
首先,它看起來不像你需要'decode_data'函數。它所做的就是掩飾你在做'json.loads',所以你可以直接在'new_station'下面做。其次,'request.get_json'沒有爲你做解析嗎?我無法從文檔中知道,我現在不能在那裏測試,但如果這是正確的話,'json.loads'調用是多餘的。 –
問題實際上是request.get_json方法,我誤解了文檔。最後j_data是一個字典,我試圖解碼,沒有任何意外,它沒有工作。謝謝,我終於解決了這個問題。 – ThCP