尝试访问使用 Jersey 开发的 POST Json 消费者端点时获取不受支持的媒体类型

Getting Unsupported Media Type when trying to access POST Json consumer endpoint developed using Jersey

当我尝试执行我的 POST 网络服务方法时出现此错误:

我正在使用 Postman 发送请求:

我的实体如下:

@Entity
@XmlRootElement
@Table(name = "bandeiras")
public class BandeiraCartao extends EntidadeBase {

  private static final long serialVersionUID = 5944226798248177637L;

  @XmlElement
  @Column(length = 60, nullable = false)
  private String nome;

  @XmlElement
  @Column(nullable = false)
  private Integer codigoImagem;

  //getters and setters//
}

这是超类:

@MappedSuperclass
public abstract class EntidadeBase implements Serializable {

private static final long serialVersionUID = -3912856473903279467L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@PodamStrategyValue(value = NullStrategy.class)
private Long id;

  @Column(name = "cadastro_data", nullable = false)
  @PodamStrategyValue(value = PastDateStrategy.class)
  private LocalDate dataCadastro;

  @Column(name = "modificado_data", nullable = false)
  @PodamStrategyValue(value = PastDateStrategy.class)
  private LocalDate dataModificacao;

  @Column(nullable = false)
  @PodamBooleanValue(boolValue = false)
  private Boolean modificado;

  @Column(nullable = false)
  @PodamBooleanValue(boolValue = true)
  private Boolean ativo;

  //getters and setters//
}

最后是我调用的端点方法:

@Path("/bandeira")
public class BandeiraCartaoResource extends AbstractResource<BandeiraCartao> {

  private static final long serialVersionUID = 7080737992715054407L;

  @POST
  @Override
  @Transactional
  public Response inserir(@NotNull BandeiraCartao entidade) {
      return super.inserir(entidade);
  }

  ...
  }

我添加了 Genson 依赖项,以便不必提供我自己的 MessageBodyWritter 实现。 我还添加了 MOXy jersey 依赖项试图解决这个问题,但它没有用。 作为附加信息,它的 运行 在 tomcat 8 上。 有线索吗?

根据我刚刚测试的...

在 post 中简单地使用 JSON 原始类型并没有设置所需的 header。您可以单击 Preview 按钮,它会显示整个请求的预览,包括 headers。你需要的是一个headerContent-Type:application/json。您会在预览中看到它不存在 window。您可以使用主屏幕上的 Headers 按钮进行设置。只需将 Header 设置为 Content-Type 并将 value 设置为 application/json

更新

如果您打开 Chrome 开发人员工具并发出请求(select "Network/XHR" 选项卡),您可以看到设置的默认 headers与 XHR 请求。它实际上不仅仅是您在 Postman 预览 window 中看到的 Cache-Control。您会看到它明确地将内容类型设置为 text/plain