2016-07-28 46 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']) 

一个/需要删除多数民众赞成在所有。