RESTE Webservice retour 415 - Unsupported Media Type
J'ai créé un REPOS webservice à l'aide de jax-rs et de jersey qui est censé utiliser JSON sur une requête POST. Ma classe de service web ressemble à ceci:
@Path("/webhookservice")
public class Webhook {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response readData (Song song) {
//Prints out the song info
System.out.println("SONG INFO \n=======================");
System.out.println("songname: " + song.getSongname());
System.out.println("artist: " + song.getArtist());
//Repsonse with a HTTP 200 OK
Response response = Response.status(200).build();
return response;
}
}
Ma classe Song:
public class Song {
private String songname;
private String artist;
public String getSongname () { return this.songname; }
public String getArtist () { return this.artist; }
public void setSongname (String songname) { this.songname = songname; }
public void setArtist (String artist) { this.artist = artist; }
}
Mon web.xml (si nécessaire)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>SnapScan-Webhook</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>za.co.lancet.service</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SnapScan-Webhook</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Je suis en utilisant RESTClient un peu, eh bien, se reposer client... Voici une capture d'écran de ce que je suis d'envoi:
Lorsque j'envoie ça de côté, j'ai l' 415 Unsupported Media Type erreur. Quelqu'un a une idée pourquoi?
Le client est-il de l'envoi de l'en-tête
Vous savez ce que vous peut-être raison. Permettez-moi de voir
Vous êtes le gagnant! Vous avez eu raison, je ne savais même pas que vous devez définir que dans ces petites applications client. Vous pouvez poster une réponse et je vais accepter. Merci!
Content-Type: application/json
?Vous savez ce que vous peut-être raison. Permettez-moi de voir
Vous êtes le gagnant! Vous avez eu raison, je ne savais même pas que vous devez définir que dans ces petites applications client. Vous pouvez poster une réponse et je vais accepter. Merci!
OriginalL'auteur Tiwaz89 | 2014-07-24
Vous devez vous connecter pour publier un commentaire.
Vous devez envoyer la demande de l'en-tête
Content-Type: application/json
. Semble que RESTE-Client n'ajoute pas cet en-tête automatiquement pour vous.OriginalL'auteur lefloh
Comme d'autres l'ont souligné, il vous manque le bon en-tête. Ajouter
Content-Type: application/json
les "en-Têtes":OriginalL'auteur grepit
J'ai eu le même
415
erreur http temps. J'ai tout simplement oublié la valeur par défaut pas de paramètres constructeur dans mon DTO classes. Ajoutant que le constructeur de la même façon que pour les entités JPA, a résolu mon problème et la dé-sérialisationJSON->Object
fonctionne maintenant.Je ne suis pas sûr que c'est votre cas, en regardant le code, mais il pourrait être utile à d'autres gars tombent ici en regardant les 415+JSON question.
Ce qui concerne
Vous êtes les bienvenus 🙂
OriginalL'auteur Fabiano Tarlao
Il pourrait être parce que vous n'avez pas spécifié un chemin d'accès de la fonction API. Vous n'avez qu'a spécifié le chemin d'accès aux ressources dans votre code.
OriginalL'auteur user3811473
J'ai tendance à ajouter
à mes services contre le haut-niveau de la déclaration de la Classe et de la remplacer le cas échéant.
par exemple
OriginalL'auteur Iain T
Ok, donc il y a des codes d'erreur qui apparaissent souvent au cours de la négociation de contenu 1) 406 - Pas acceptable
2) 415 - Unsupported Media Type
406, c'est quand le serveur n'accepte pas le type de contenu qui est envoyé sous la ACCEPTER d'en-tête de la demande.
415 est le client envoie un type de contenu dans l'entête de la requête, et ainsi de serveur carrément rejette en disant non pris en charge type de média
à surmonter 406 - nous doit inclure les dépendants des pots-dire un client veut une entrée XML pour être comprise par le serveur, le serveur doit avoir XML liés à des dépendances.
à surmonter 415 - comprendre les types de médias pris en charge par le serveur et passer le type de support correct dans l'entête content-type de la demande
OriginalL'auteur Kapil Reddy
Bien qu'il pouvait être bête de l'expérience à partager, je vais partager dans le cas où il sauve la journée de quelqu'un d'autre.
J'avais mis consécutives de fonctions, le premier a été avec l'annotation
@BodyParser.Of(BodyParser.Json.class)
, lorsque je lui ai dit que la première fonction de l'annotation de ligne a été laissé sans commentaire par erreur, l'annotation a été appliquée sur cette seconde fonction entraînant un tel 415 type de support d'erreurhth
OriginalL'auteur Hasnaa Ibraheem