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

时间:2015-03-05 14:02:28

标签: java json jersey jax-rs postman

当我尝试执行POST Web服务方法时,我收到此错误:

415 error

我正在使用Postman发送请求:

postman-post-json request

我的实体如下:

@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上运行。 任何线索的人?

1 个答案:

答案 0 :(得分:2)

从我刚刚测试的......

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

<强>更新

如果您打开Chrome开发者工具并发出请求(选择&#34; Network / XHR&#34;标签),您可以看到使用XHR请求设置的默认标头。它实际上不仅仅是您在Postman预览窗口中看到的Cache-Control。您将看到它将内容类型明确设置为text/plain

enter image description here