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

Services Web Java Discussion :

WebService : Paramètre JSON pour une requête POST récupérée vide


Sujet :

Services Web Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Par défaut WebService : Paramètre JSON pour une requête POST récupérée vide
    Bonjour,

    Je précise avant de commencer que je débute dans la création de l'utilisation de Web Service.
    Pour un projet universitaire, nous avons besoin de créer un web service en java et j'ai un soucis sur une de mes méthodes.

    C'est une requête POST qui est sensé récupérer plusieurs informations par rapport a une zone sur Google Map et sauvegarder ça dans notre base de données. Le fonctionnement en lui même de la méthode ne devrait poser aucun soucis à être coder par contre je suis bloqué sur le démarrage puisque mes données à enregistrer sont sensés être envoyés en JSON depuis le client, que le serveur va récupérer pour les traiter.

    Avant de tester dans le code, je suis déjà en train de faire des essais grâce a POSTMAN (https://chrome.google.com/webstore/d...cddcbncdddomop) pour vérifier que l'URL fonctionne, etc...

    C'est là que ça pose soucis puisque quand je teste ma requête, l'URL est bonne, le serveur reçoit bien la demande (je le lance en mode debug sur IntellJ pour vérifier que le traitement se lance bien) et sans parler de traitement ou quoi, le retour fonctionne MAIS le JSON que j'envoie est a NULL dans ma méthode. J'ai surement fait une erreur quelque part et je suis un peu perdu dans les diffèrents types de paramètres, etc...

    Passons aux codes :

    La déclaration du service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        @POST
        @Path("/saveZone/")
        @Consumes(MediaType.APPLICATION_JSON)
        Response saveZones(@QueryParam("requestJson") String requestJson);
    L'implémentation de ma méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        @Override
        public Response saveZones(String requestJson) {
     
            // Plus tard ici le traitement pour l'enregistrement dans la base sera écrit.
            // Pour le moment je teste juste si je reçoit bien mon JSON.
     
            return Response.status(202).build();
        }
    Je teste ma requête depuis POSTMAN, je reçoit mon retour 202, bref tout est bon de ce côté là, j'envoie aussi mon JSON avec les infos dedans :
    Nom : Capture8.JPG
Affichages : 2205
Taille : 50,5 Ko

    Lorsque je teste ma requête en ayant lancer le serveur en mode debug, l’exécution se fait bien, mais comme on peut le voir, mon paramètre JSON est null, je ne reçoit donc rien de ce que j'ai envoyé :
    Nom : Capture7.JPG
Affichages : 2059
Taille : 24,1 Ko

    C'est là ou j'ai besoin de votre aide pour savoir et comprendre ce que j'ai mal fait et pourquoi je ne reçoit rien.
    Je suis quasi persuadé que cela vient du type de paramètre que j'ai utilisé mais je cherche encore à savoir comment faire du coup. Bref...

    Je vous remercie d'avance et vous souhaite un bon vendredi avant d'attaquer le week-end !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    @QueryParam("requestJson") signifie que tu attends ce paramètre comme query, sous la forme requestJson=.....

    Si tu veux directement récupérer le body du POST, il faut utiliser @RequestBody

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    @QueryParam("requestJson") signifie que tu attends ce paramètre comme query, sous la forme requestJson=.....

    Si tu veux directement récupérer le body du POST, il faut utiliser @RequestBody
    Bonjour, merci de ta réponse mais @RequestBody n'est pas disponible chez moi, si j'ai bien compris, c'est inclus avec le framework Spring et on ne l'utilise pas dans notre projet.

    EDIT : J'ai trouvé ça : http://stackoverflow.com/questions/2...estful-service
    Mais est-on vraiment obligé de devoir faire une classe pour pouvoir récupérer notre JSON ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ha j'ai mal comrpis, ton message ne disait pas quelle api tu utilisais il me semble. Si tu utilise juste l'api j2ee
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        @POST
        @Path("/saveZone/")
        @Consumes(MediaType.APPLICATION_JSON)
        Response saveZones(TonObjet requestJson);
    C'est à dire sans le @QueryParam, mais tu dois définir un objet qui correspond à ton JSON en terme de structure.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/05/2016, 12h22
  2. Réponses: 2
    Dernier message: 12/03/2012, 08h27
  3. Réponses: 2
    Dernier message: 30/12/2007, 15h31
  4. [code VBA]passage de variable pour une requête paramétrée
    Par christrabin dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/04/2007, 14h30
  5. Réponses: 3
    Dernier message: 28/06/2006, 17h01

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