You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确向Flask Web服务POST发送JSON?请求先200后400异常

问题分析与解决方案

你的核心问题在于Flask视图函数未返回合法的HTTP响应,这导致客户端(SFDC-Callout)无法收到预期结果,进而触发重试机制,最终出现400错误。

具体原因

你提供的视图函数中仅有print语句,没有任何return语句。Flask在这种场景下会默认返回空的200响应,但SFDC-Callout可能期望收到格式合规的JSON响应,因此会判定第一次请求失败并发起重试。第二次请求时,可能因SFDC的重试校验(如重复请求拦截)或请求上下文变化,导致返回400错误。

需要注意的是,控制台能打印出正确解析的JSON数据,仅说明请求解析环节无问题,不代表整个请求处理流程完整。

修复步骤

修改视图函数,确保返回合法的JSON响应:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/parsed-invoice', methods=['GET', 'POST'])
def parse_invoice():
    if request.method == 'POST':
        files_ids_jsonified = request.get_json()
        print(f"FILE IDS JSON  {files_ids_jsonified} TYPE {type(files_ids_jsonified)}")
        # 返回符合要求的JSON响应与200状态码
        return jsonify(
            {'message': '文件ID已成功接收', 'filesIds': files_ids_jsonified['filesIds']}
        ), 200
    # 处理GET请求(若无需支持可返回405方法不允许)
    return jsonify({'error': '不支持该请求方法'}), 405

额外检查点

  • 确认SFDC-Callout发送请求时,Content-Type头设置为application/json(虽然force=True能绕过格式校验,但规范的请求头可避免潜在问题)。
  • 开启Flask调试模式(app.debug = True)或调整日志级别,查看400错误的具体详情,进一步定位第二次请求失败的原因。

内容的提问来源于stack exchange,提问作者Oleksii Drozd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:03:11