使用Curl向树莓派Flask服务器发送数据失败问题求助
解决curl向Flask服务器传输数据失败的问题
我来帮你排查这个问题,大概率是curl命令里的参数格式和请求方法的匹配出了问题,我踩过类似的坑,给你几个针对性的解决方案:
修正参数中的转义字符:你在curl的
--data参数里用了&,这是HTML场景下的转义符,但直接在curl命令里应该用普通的&来分隔参数。把所有&替换成&,修正后的命令如下:curl --data 'twitakt=1&b0=24&b1=91&b2=24&b3=91' http://192.168.1.212:5000/twi检查Flask路由的请求方法兼容性:你用macOS应用发送的是GET请求(数据附在URL的查询参数里),但curl用
--data参数时默认会发送POST请求。如果你的Flask路由只配置了接受GET请求(比如没在@app.route里指定methods参数),POST请求会被服务器拒绝:- 如果你想沿用GET方式,直接把参数拼在URL里,用curl发送:
curl "http://192.168.1.212:5000/twi?twitakt=1&b0=24&b1=91&b2=24&b3=91" - 如果你想保留POST方式,需要修改Flask路由,允许接受POST请求:
from flask import Flask, request app = Flask(__name__) @app.route('/twi', methods=['GET', 'POST']) # 同时支持GET和POST def twi_process(): # 获取参数:GET用request.args,POST用request.form twitakt = request.args.get('twitakt') or request.form.get('twitakt') b0 = request.args.get('b0') or request.form.get('b0') # 后续处理逻辑... return "Success" if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
- 如果你想沿用GET方式,直接把参数拼在URL里,用curl发送:
用verbose模式排查细节:如果还是不行,给curl加
-v参数查看详细请求日志,能看到请求头、响应状态码、服务器返回的内容,帮你定位具体问题:curl -v --data 'twitakt=1&b0=24&b1=91&b2=24&b3=91' http://192.168.1.212:5000/twi
内容的提问来源于stack exchange,提问作者heimi
相关产品推荐
相关产品推荐

