Я столкнулся с той же ошибкой 415
http при отправке объектов, сериализованных в JSON, через запросы PUT / PUSH к моим службам JAX-rs, другими словами, мой сервер не смог десериализовать объекты из JSON.
В моем случае сервер смог успешно сериализовать одни и те же объекты в JSON при отправке их в свои ответы.
Как упоминалось в других ответах, я правильно установил заголовки Accept
и Content-Type
на application/json
, но этого недостаточно.
Решение
Я просто забыл конструктор по умолчанию без параметров для моих объектов DTO. Да, это та же причина, что и для объектов @Entity, вам нужен конструктор без параметров, чтобы ORM создавал объекты и заполнял поля позже.
Добавление конструктора без параметров в мои объекты DTO решило мою проблему.
Вот пример, который напоминает мой код:
Неправильный
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class NumberDTO {
public NumberDTO(Number number) {
this.number = number;
}
private Number number;
public Number getNumber() {
return number;
}
public void setNumber(Number string) {
this.number = string;
}
}
правый
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class NumberDTO {
public NumberDTO() {
}
public NumberDTO(Number number) {
this.number = number;
}
private Number number;
public Number getNumber() {
return number;
}
public void setNumber(Number string) {
this.number = string;
}
}
Я потерял часы, надеюсь, это спасет твоё; -)