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

调用REST API时Postman响应Content-Type不符问题求助

解决REST API响应头Content-Type与请求不匹配的问题

针对你遇到的请求Content-Type: application/json但响应头返回application/xml的问题,给你几个可行的排查和解决步骤:

  • 检查Postman的Accept请求头
    服务端的响应格式通常是根据Accept头做内容协商,而非Content-Type。你可能只设置了请求的Content-Type,但未指定Accept: application/json。在Postman的请求头里添加该字段,强制服务端返回JSON格式,响应头也会对应更新。

  • 调整@Produces注解的顺序
    将application/json放在@Produces的首位:

    @Produces({"application/json", "application/xml"})
    

    JAX-RS会按注解里的顺序匹配Accept头的优先级,如果客户端Accept是*/*,会优先选用第一个指定的媒体类型。

  • 用ResponseBuilder明确指定响应类型
    放弃直接操作HttpServletResponse,改用JAX-RS的Response对象构建返回结果,明确指定媒体类型:

    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    
    // 示例:返回JSON格式响应
    public Response yourApiMethod() {
        // 构建你的JSON响应实体(比如POJO或字符串)
        Object jsonEntity = ...;
        return Response.ok(jsonEntity, MediaType.APPLICATION_JSON).build();
    }
    

    这种方式会让JAX-RS框架正确处理响应头,避免被其他流程覆盖。

  • 排查全局拦截器/过滤器
    检查项目中是否存在全局的Filter或Interceptor(比如日志、跨域相关组件),这些组件可能会在响应输出前修改Content-Type头。可以临时禁用这些组件测试,确认是否是它们导致的问题。

  • 检查实体类的序列化注解
    如果你的返回实体类带有JAXB注解(如@XmlRootElement),部分JAX-RS实现可能会优先触发XML序列化逻辑,即使你返回的是JSON内容。确保实体类同时支持JSON序列化(比如添加Jackson的@JsonProperty注解),或者移除不必要的JAXB注解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:17:14