415 (Unsupported Media Type) dans $http.méthode post
Je suis assez nouveau pour le REPOS et AngularJS, mais après plusieurs heures de recherches sur google je n'arrivais pas à trouver de réponse à ma question:
Je suis en train de faire un POST à la demande de mon angularjs frontend pour mon backend implémenté en java (à l'aide de JPA).
Quand je suis en train de créer un json-objet et faire un POST, je reçois toujours le 415 (Unsupported Media Type) erreur.
(En fait je n'ai même pas "dans" le champ d'application de service (je.E. "EN SERVICE" n'est écrit à la console)..
Si j'ajoute postData.la méthode toJSON(), elle est "Posté", mais n'arrive nulle ...
comment dois-je formater mon 'postData" Afin de réussir à obtenir Posté?
(J'ai aussi essayé d'écrire la Date-propriétés sans '"' - pas de chance...)
Merci pour votre aide!
FrontEnd:
app.contrôleur('WorkController', function($champ, $http) {
$scope.saveWork = function () {
var postData = {
"status" : "OPEN",
"startDate": "1338364250000",
"endDate": "1336364253400",
"WorkText" : "Test"
};
$http.post("http://localhost:8080/service/v1/saveWork", postData)
.success(function(data, status, headers, config){
console.log("IN SAVE WORK - SUCCESS");
console.log(status);
})
.error(function(){
console.log("ERROR IN SAVE WORK!");
})
}
});
Service:
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response save(WorkDto wo){
System.out.println("IN SERVICE");
if(ass == null){
System.out.println("Could nor persist work- null");
return Response.noContent().build();
} else{
Work workDao = WorkTransformator.transform(wo);
workDao.persist();
return Response.ok().build();
}
}
- Comment vos services peuvent consommer xml de l'application et de l'application json types? Je pense que l'un ou l'autre comme la plupart json qui serait le mieux pour AngularJS back-end.
- en fait, aussi loin que je maintenant - JSON est la valeur par défaut du type de contenu pour angularjs. ainsi, le xml-type est donc inutile - mais en évitant ce type, malheureusement, n'est pas de résoudre le problème...
Vous devez vous connecter pour publier un commentaire.
Au lieu de la construction et de l'envoi d'un analysée objet JSON, créer un objet javascript et l'envoyer à votre corps post. Vous pouvez réutiliser votre postData objet, mais essayez de supprimer les "" autour de noms de propriétés.
Essayez ceci:
Mise à JOUR
Ressemble le ci-dessus ne fonctionne pas par lui-même. Je pensais que le Type de Contenu serait inférer.
Pouvez-vous essayer de faire la demande de publication de cette façon :
Mise à JOUR 2
Si cela n'a pas de travail, de composer une requête post à l'aide de Fiddler, et vérifier ce qui est de la réponse.
Voici quelques conseils:
Vous pouvez ensuite vérifier sur le volet de gauche de ce qu'était le code de réponse du serveur. Double cliquez sur cette ligne (Ignorer le code d'erreur sur la capture d'écran...vous devriez avoir un 415)
Après avoir double-cliquant sur la ligne de réponse, vous pouvez vérifier et consulter pour plus de détails sur le panneau de droite:
Si vous pouvez avec succès post avec un «fabriqué» objet JSON alors le problème réside sur votre Angulaire de code. Si non, il est certainement quelque chose de mal avec votre Reste de la configuration du Service.
Vous pouvez également consulter les détails de vos POSTS avec l'angle d'application dans Fiddler2. Cela devrait vous donner une bonne idée de ce qu'il se passe.
Si vous êtes dedans, vous pouvez ensuite mettre à jour votre question avec quelques captures d'écran de votre Angulaire demandes app. Qui va certainement nous aider à vous aider 🙂
J'ai enfin réussi à trouver la cause de mon erreur!
Dans mon Repos-Service, j'ai directement pensé que ma java de la classe en tant que paramètre. (Je pensais que ce serait analysée/désérialisé automatiquement). Tout à fait naïf, je pense... 🙂
Afin d'obtenir ce travail, j'ai dû:
-S'attendre à une Chaîne de caractères comme Paramètre dans ma @POSTE, service
-Deserialize (à l'aide de GSON)
Ici est que le (travail) service:
Encore merci Antoine pour votre aide!