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

调用Amadeus航班报价定价API返回400错误:type needed

解决Amadeus航班报价定价API调用400 "type needed"错误

问题核心

Postman调用API时,请求体包含"type": "flight-offer"字段可成功执行,但Java代码中传递的FlightOfferSearch对象序列化后缺失该字段,导致API返回400错误提示"type needed"。

解决方案

1. 确保自定义FlightOfferSearch类包含type字段

如果你使用的是自定义实体类,必须添加type字段并默认赋值为"flight-offer",保证序列化时该字段被包含:

public class FlightOfferSearch {
    // 原有字段...
    private String type = "flight-offer";

    // 按需提供getter/setter
    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}

同时检查Gson序列化配置,确保该字段未被@Exclude等注解排除;若字段名映射异常,可添加@SerializedName("type")注解强制匹配:

@SerializedName("type")
private String type = "flight-offer";

2. 使用SDK内置对象构建器(推荐)

如果使用Amadeus Java SDK提供的FlightOfferSearch类,建议用SDK自带的构建器创建对象,避免手动设置字段遗漏:

FlightOfferSearch offer = FlightOfferSearch.builder()
    .type("flight-offer")
    .id("1")
    .source("GDS")
    // 依次设置其他必填字段(如itineraries、price等)
    .build();

3. 验证序列化后的请求体

在代码中添加日志,输出序列化后的JSON内容,对比Postman的请求体确认type字段存在:

Gson gson = new Gson();
String serializedBody = gson.toJson(offer);
System.out.println("请求体内容:" + serializedBody);

若输出的JSON中无type字段,需调整实体类的序列化规则或字段定义。

额外排查点

  • 确认Amadeus Java SDK 6.2.0版本与测试环境API的兼容性,核对官方文档的请求结构要求。
  • 检查Spring MVC的@RequestBody是否正确将前端传入的JSON反序列化为FlightOfferSearch对象,确保原始请求体包含type字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:15:41