IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Boot Java Discussion :

SpringBoot problème de type=Unsupported Media Type, status=415


Sujet :

Spring Boot Java

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut SpringBoot problème de type=Unsupported Media Type, status=415
    Bonjour à tous,
    J'ai un problème application/x-www-form-urlencoded avec mon formulaire.En fait, quand j'envoie les données(en format json), elles sont bien récupérées par la méthode qui s'en charge sauf que j'ai ce message d'erreur dans le navigateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    There was an unexpected error (type=Unsupported Media Type, status=415).
    Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported
    Voici mes différents codes :

    Méthode qui récupère les données du formulaire et les insère dans la base de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	@RequestMapping(value = "/insert",method = RequestMethod.POST, consumes="application/json")
    	public @ResponseBody void createType(@RequestBody Type type) {
    		typeService.createType(type);
    	}
    HTML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
        <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>Getting Started: Handling Form Submission</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        <div id="app">
        <h1>TEST FORM</h1>
         <form action="" method="post">
            <p>Type description: <input type="text" v-model="type.description"/></p>
            <p><button v-on:click="addType()"> Send </button><input type="reset" value="Reset" /></p>
        </form>
        </div>
     
     
        <script src="http://cdn.jsdelivr.net/vue/1.0.10/vue.min.js"></script> 
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
          <script>
            Vue.prototype.$http = axios;
            new Vue({
                el:'#app',
                data:{
                    type:{description:''}
                },
                methods:{
                    addType(){
                        /*const config = { headers: { 'Content-Type': 'application/x-www-form-urlencoded',
                                                     'Accept': 'application/x-www-form-urlencoded'
                                                  }
                                       };*/
                        let newType = {description:this.type.description};
                        console.log(newType);
                        this.$http.post('/types/insert',newType).then(response => {
                            console.log(response);
                        });
                    }
                }
            });
          </script>
    </body>
    </html>
    J'ai essayé les différents enctype(text/plain et multipart/form-data; application/x-www-form-urlencoded étant celle par defaut) du formulaire mais aucun ne m'a permis de résoudre le problème.

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Par défaut Ajax encode un POST en application/x-www-form-urlencoded
    Côté Spring c'est donc FormHttpMessageConverter qui le prendra en charge pour produire un MultiValueMap ce qui entre en conflit avec le type annoté par @RequestBody
    donc soit vous changer le POST pour envoyer de l'application/json (dans le header) soit vous modifier le @Controller en enlevant le @RequestBody et en gardant le type actuel
    ou gardez le @RequestBody mais en changeant le type pour MultiValueMap

    A lire :
    https://docs.spring.io/spring/docs/4...rlencoded-data
    pour le support de PUT et PATCH

Discussions similaires

  1. [Débutant] [Résolu]communication avec php (ou autre) / Unsupported Media Type
    Par mybetacompany dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 11/03/2014, 18h06
  2. [REST / Jersey] Erreur "Unsupported Media Type"
    Par a.rami dans le forum Services Web
    Réponses: 0
    Dernier message: 08/11/2012, 11h53
  3. Unsupported Media Type - Web Service Soap
    Par zouberi dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 03/10/2011, 09h14
  4. Problème de conversion d'un type chaîne en type double
    Par Antonin08 dans le forum Windows
    Réponses: 5
    Dernier message: 17/10/2008, 14h17
  5. [AXIS2] client side : Unsupported Media Type
    Par seb_m dans le forum Services Web
    Réponses: 1
    Dernier message: 27/03/2008, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo