D'État HTTP 415 - Unsupported Media Type
Je suis en train de travailler sur Java, services web restful. Tout en testant le service restful je reçois les réponses correctes pour OBTENIR et SUPPRIMER des méthodes, mais il ne fonctionne pas pour le POST et PUT méthodes. Quelqu'un peut-il m'aider? J'ai écrit le code suivant:
StudentService.java
@Stateless
@Path("students")
public class StudentService extends StudentServiceLocal<Students> {
@PersistenceContext(unitName = "RestFulAPIPU")
private EntityManager em;
public StudentsFacadeREST() {
super(Students.class);
}
@POST
@Override
@Consumes({"application/xml", "application/json"})
public String create(Students entity) {
return(super.create(entity));
}
@PUT
@Override
@Consumes({"application/xml", "application/json"})
public String edit(@PathParam("id") Students entity) {
return(super.edit(entity));
}
@DELETE
@Path("{id}")
public String remove(@PathParam("id") Integer id) {
return(super.remove(super.find(id)));
}
@GET
@Path("{id}")
@Produces({"application/xml", "application/json"})
public Students find(@PathParam("id") Integer id) {
return super.find(id);
}
@GET
@Override
@Produces({"application/xml", "application/json"})
public List<Students> findAll() {
return super.findAll();
}
@GET
@Path("{from}/{to}")
@Produces({"application/xml", "application/json"})
public List<Students> findRange(@PathParam("from") Integer from, @PathParam("to") Integer to) {
return super.findRange(new int[]{from, to});
}
@GET
@Path("count")
@Produces("text/plain")
public String countREST() {
return String.valueOf(super.count());
}
@Override
protected EntityManager getEntityManager() {
return em;
}
}
StudentServiceLocal.java
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
public AbstractFacade(Class<T> entityClass) {
this.entityClass = entityClass;
}
protected abstract EntityManager getEntityManager();
public String create(T entity) {
getEntityManager().persist(entity);
return "inserted";
}
public String edit(T entity) {
getEntityManager().merge(entity);
return "Updated";
}
public String remove(T entity) {
getEntityManager().remove(getEntityManager().merge(entity));
return "deleted";
}
public T find(Object id) {
return getEntityManager().find(entityClass, id);
}
public List<T> findAll() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
return getEntityManager().createQuery(cq).getResultList();
}
public List<T> findRange(int[] range) {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
javax.persistence.Query q = getEntityManager().createQuery(cq);
q.setMaxResults(range[1] - range[0]);
q.setFirstResult(range[0]);
return q.getResultList();
}
public int count() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
cq.select(getEntityManager().getCriteriaBuilder().count(rt));
javax.persistence.Query q = getEntityManager().createQuery(cq);
return ((Long) q.getSingleResult()).intValue();
}
}
Students.java
@Entity
@Table(name = "students")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Students.findAll", query = "SELECT s FROM Students s"),
@NamedQuery(name = "Students.findByRollno", query = "SELECT s FROM Students s WHERE s.rollno = :rollno"),
@NamedQuery(name = "Students.findByName", query = "SELECT s FROM Students s WHERE s.name = :name")})
public class Students implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Column(name = "rollno")
private Integer rollno;
@Size(max = 20)
@Column(name = "name")
private String name;
public Students() {
}
public Students(Integer rollno) {
this.rollno = rollno;
}
public Integer getRollno() {
return rollno;
}
public void setRollno(Integer rollno) {
this.rollno = rollno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
int hash = 0;
hash += (rollno != null ? rollno.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
//TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Students)) {
return false;
}
Students other = (Students) object;
if ((this.rollno == null && other.rollno != null) || (this.rollno != null && !this.rollno.equals(other.rollno))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.ikanksha.rest.entity.Students[ rollno=" + rollno + " ]";
}
}
Et comment êtes-vous tester? C'est un problème avec celui qui fait la demande, et non avec le service.
Qu'est-ce que vos entrées?
je m à l'aide de netbeans IDE, donc il est disponible outil pour tester le service restful.
mon entrée est en xml fromate que <les étudiants> <nom>Manohar</nom> <rollno>1</rollno> </étudiants>
Vous devez inclure un exemple de la façon dont vous effectuez les analyses des Postes et des Met.
Qu'est-ce que vos entrées?
je m à l'aide de netbeans IDE, donc il est disponible outil pour tester le service restful.
mon entrée est en xml fromate que <les étudiants> <nom>Manohar</nom> <rollno>1</rollno> </étudiants>
Vous devez inclure un exemple de la façon dont vous effectuez les analyses des Postes et des Met.
OriginalL'auteur Manohar Bomma | 2013-02-07
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que vous définissez
Content-Type: application/xml
dans les en-têtes de votre demande.Je ne sais pas comment c'est fait avec NetBeans, mais il est assez simple de le faire avec RESTClient.
OriginalL'auteur Aurélien
Mon erreur est
Adjonction de la dépendance dans
pom.xml
résolu mon problème:MyModelClass
a le nom et le prénom propriétésPost de ce genre dans la classe de test.
si vous publiez ou METTRE certaines données, veuillez vous inscrire JacksonProvider et JacksonFeature
La jetée du serveur HTTP
OriginalL'auteur ethemsulan
J'ai eu ce même problème tout à l'heure...
Ma solution a été de supprimer le constructeur avec paramètres.
Dans votre cas: supprimer
OriginalL'auteur Jero Dungog