2017-03-31 1 views
2

Voici ma classe POJOobtenir le statut HTTP 415 - Type de support non pris en charge avec Jersey

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; 
} 

}

Ci-dessous est ma classe de ressources

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'}"; 
     } 
    } 
} 

}

Please see the maven dependencies here

j'assuré que dans le RESTClient je donne le type de contenu en tant que Content-Type: application/JSON

Please see the RESTClient

Ci-dessous mon web.xml

Mais même alors que je reçois l'erreur 'Obtenir HTTP Statut 415 - Support non pris en charge '

Pouvez-vous faire des photos, où vais-je mal?

Répondre

1

Je vois que vous avez MOXy. Mais MOXy ne sait comment gérer les classes annotées avec @XmlRootElement. C'est la raison pour laquelle le 415: Jersey ne peut pas trouver un MessageBodyReader pour gérer le type.

Après avoir ajouté le @XmlRootElement au-dessus de la classe Credentials, vous allez obtenir une autre erreur, car Moxy ne sera pas en mesure de désérialiser en fait le JSON à votre Credentials. La raison en est qu'il n'y a pas de constructeur par défaut (sans arg). Donc, ajoutez cela, et je pense que vous devriez être bon.

+0

Merci beaucoup. Cela a fonctionné exactement comme vous l'avez décrit. –