2016-07-28 83 views
0

我嘗試在Arduino上運行小型的匹配站,實際上它已經可以監視溫度和溼度。所以我決定將數據存儲在數據庫中,並使用Flask對ob web服務器進行可視化。我在python上創建了一個從串口獲取數據並將其發送到服務器的小腳本。從python發送JSON到使用無結果請求的Flask

def send_JSON_to_server(meteodata): 
    print(meteodata) 
    url = 'http://127.0.0.1:8080/api/meteo' 
    headers = {'Content-Type': 'application/json'} 
    resp = requests.post(url , data = json.dumps(meteodata), headers=headers) 
    print(resp) 

ser = serial.Serial('/dev/cu.usbmodem1411', 9600) 
while True: 
    json_string = ser.readline().decode("utf-8") 
    send_JSON_to_server(json_string) 

它獲得的數據從串口穿孔串並嘗試發送瓶的應用程序。在服務器端我有一個代碼:

​​

在這裏,我有一個問題,在我看來,這一請求來服務器作爲GET,至少如果我離開只是在方法的帖子,我立刻得到405的響應和在apache日誌中沒有錯誤。如果我像這個請求一樣離開它,發送到服務器並返回999,這意味着它不被接受爲POST。我知道405通常連接到配置或安全問題,所以你可以看到我的虛擬主機配置在下面。我在不同的項目中使用了相同的功能,它正在工作。

WSGIScriptAlias//var/www/meteo/meteo.wsgi 

DocumentRoot /var/www/meteo 
    <Directory /var/www/meteo> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    </Directory> 

我也想提供JSON的例子,我從Arduino的和requests.post響應後得到的,因爲你可以看到波紋管。

{"humidity":57.10,"temperature":28.10,"tempbyfeeling":29.27} 

<Response [405]> 
+0

你會得到什麼錯誤?請[edit]包含[mcve]。 – davidism

回答

0

我找出一個愚蠢的錯誤在我的瓶的應用程序,路由就可以看到行期間:

@app.route('/api/meteo/', methods=['GET','POST']) 

這裏是導致應答301,並立即生成GET一個錯誤。右邊的行應該是:

@app.route('/api/meteo', methods=['GET','POST']) 

一個/需要刪除多數民衆贊成在所有。