Получение статуса HTTP 415 - неподдерживаемый тип носителя с Джерси

Ниже мой класс POJO

public class Credentials {
private int cred_id;
private String cred_user_name;
private String cred_password;
private String cred_token;

public Credentials(int cred_id, String cred_user_name,
        String cred_password, String cred_token) {
    this.cred_id = cred_id;
    this.cred_user_name = cred_user_name;
    this.cred_password = cred_password;
    this.cred_token = cred_token;
}

public int getCred_id() {
    return cred_id;
}

public void setCred_id(int cred_id) {
    this.cred_id = cred_id;
}

public String getCred_user_name() {
    return cred_user_name;
}

public void setCred_user_name(String cred_user_name) {
    this.cred_user_name = cred_user_name;
}

public String getCred_password() {
    return cred_password;
}

public void setCred_password(String cred_password) {
    this.cred_password = cred_password;
}

public String getCred_token() {
    return cred_token;
}

public void setCred_token(String cred_token) {
    this.cred_token = cred_token;
}

}

Ниже мой класс ресурсов

public class ValidateUser {
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public String validateUser(Credentials credentials) {
    System.out.println("Going to validate the user" + credentials);
    String username = credentials.getCred_user_name();
    String password = credentials.getCred_password();
    CredentialsAccessor ca = new CredentialsAccessor();
    long count = 0;
    count = ca.authenticateUser(username, password);
    if (count > 0) {
        JSONObject jObject = new JSONObject();
        try {
            jObject.put("valid", "true");
            return jObject.toString();
        } catch (JSONException e) {
            e.printStackTrace();
            return "{'valid':'error'}";
        }
    } else {
        JSONObject jObject = new JSONObject();
        try {
            jObject.put("valid", "false");
            return jObject.toString();
        } catch (JSONException e) {
            e.printStackTrace();
            return "{'valid':'error'}";
        }
    }
}

}

См. зависимости maven здесь

Я убедился, что в RESTClient я указываю тип контента как Content-Type: application / json

См. RESTClient

Ниже мой web.xml

Но даже тогда я получаю сообщение об ошибке «Получение статуса HTTP 415 - Неподдерживаемый носитель».

Вы можете себе представить, где я ошибаюсь?


person Balaji Vignesh    schedule 31.03.2017    source источник


Ответы (1)


Вижу, у вас есть МОКСИ. Но MOXy знает только, как работать с классами, помеченными @XmlRootElement. Это причина 415: Джерси не может найти MessageBodyReader для обработки этого типа.

После добавления @XmlRootElement поверх класса Credentials вы получите еще одну ошибку, потому что MOXy не сможет фактически десериализовать JSON в ваш Credentials. Причина в том, что нет конструктора по умолчанию (без аргументов). Так что добавьте это, и я думаю, у вас должно получиться хорошо.

person Paul Samsotha    schedule 31.03.2017
comment
Большое тебе спасибо. Это сработало именно так, как вы описали. - person Balaji Vignesh; 03.04.2017