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

Java调用Airtable POST接口报INVALID_REQUEST_BODY错误如何解决

问题原因

你遇到的INVALID_REQUEST_BODY错误核心原因是手动拼接的JSON字符串完全不符合JSON语法规范,具体错误点如下:

  • 所有JSON键名(fields/Shopping/Update/typecast)未用双引号包裹
  • 字符串类型的值(record_id/Apple)未用双引号包裹
  • Shopping和Update两个字段之间缺少逗号分隔
  • 若Shopping是关联表字段,按照Airtable接口要求,值必须是存储关联记录ID的数组,不能直接传字符串

修正方案

方案1:使用Unirest原生Map传参(推荐,避免手动拼JSON出错)

public void createNewRecord() throws UnirestException {
    // 构造fields内部参数
    Map<String, Object> fields = new HashMap<>();
    // 关联字段要传数组,这里替换为你实际的关联记录ID
    fields.put("Shopping", new String[]{"你实际的关联记录ID"});
    fields.put("Update", "Apple");
    
    // 构造完整请求体
    Map<String, Object> body = new HashMap<>();
    body.put("fields", fields);
    body.put("typecast", true);
    
    HttpResponse<JsonNode> response = Unirest.post("https://api.airtable.com/v0/"+environments.MAIN_BASE_API_KEY+"/"+ environments.TABLE_NAME)
        .header("Content-Type", "application/json")
        .header("Authorization", "Bearer " + environments.AIRTABLE_API_KEY)
        .body(body) // 直接传Map,Unirest会自动序列化为合法JSON
        .asJson();
    System.out.println(response.getBody().toString());
}

方案2:修正手动拼接的JSON(不推荐,容易出错)

String jsonRequest = "{" + 
    "\"fields\": {" +
        "\"Shopping\": [\"record_id\"]," + // 关联字段用数组,加双引号,末尾加逗号
        "\"Update\": \"Apple\"" + // 字符串值加双引号
    "}," +
    "\"typecast\": true" + 
"}";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:09:03