Android模拟器无法通过Flask向远程服务器传输数据
Flask "Not Found" 错误排查与解决
问题现象
运行Flask服务器时,收到错误提示:
Not Found:请求的URL在服务器上未找到。如果您手动输入了URL,请检查拼写并重试。
错误原因及解决方法
1. 请求路径/方法不匹配
当前代码仅配置了根路径/的POST请求路由,以下情况会触发Not Found:
- 用GET方法访问
/ - 访问了未定义的其他路径(如
/upload)
解决:
- 若需要支持GET访问根路径,修改路由装饰器并添加GET逻辑:
@app.route('/', methods=['GET', 'POST']) def handle_call_logs(): if request.method == 'GET': return jsonify({'message': '请使用POST方法上传名为call_log的文件'}) # 原POST逻辑保持不变
- 确保客户端向
http://localhost:5000/发送POST请求。
2. 客户端请求参数错误
代码中接收的文件参数名为call_log,若客户端上传时参数名不一致,会导致请求处理失败。需确保客户端请求中携带的文件参数名为call_log。
3. 额外优化:确保上传目录存在
代码中指定的上传目录若不存在,保存文件时会报错,建议在初始化时添加目录创建逻辑:
# 在配置完UPLOAD_FOLDER后添加 os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
测试命令
可用以下curl命令测试POST请求是否正常:
curl -X POST -F "call_log=@your_file.csv" http://localhost:5000/
完整优化代码
from flask import Flask, request, jsonify from werkzeug.utils import secure_filename import os app = Flask(__name__) app.config['UPLOAD_FOLDER'] = 'C:\\Users\\leech\\Desktop\\University\\year2-tri2\\2207\\calllogs\\uploads' app.config['ALLOWED_EXTENSIONS'] = {'txt', 'csv'} # 确保上传目录存在 os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1] in app.config['ALLOWED_EXTENSIONS'] @app.route('/', methods=['GET', 'POST']) def handle_call_logs(): if request.method == 'GET': return jsonify({'message': '请使用POST方法上传名为call_log的文件'}) elif request.method == 'POST': file = request.files.get('call_log') if file and allowed_file(file.filename): filename = secure_filename(file.filename) file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) file.save(file_path) return jsonify({'status': 'success'}) else: return jsonify({'status': 'failed', 'reason': '无效的文件或未提供文件'}) else: return jsonify({'status': 'Invalid request method'}) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
内容的提问来源于stack exchange,提问作者tester
相关产品推荐
相关产品推荐

