1. #1
    Membre expérimenté Avatar de romulus001
    Homme Profil pro
    Développeur VB.NET et Windev (22) sur produits SAGE ligne 100
    Inscrit en
    mai 2009
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur VB.NET et Windev (22) sur produits SAGE ligne 100

    Informations forums :
    Inscription : mai 2009
    Messages : 1 103
    Points : 1 302
    Points
    1 302

    Par défaut [Angular 4] Bonne récupération des attributs lors appel web service

    Bonjour,

    J'ai mis le code suivant pour récupérer les attributs qui sont retournés par une valeur de type JSON retournée par l'appel d'un web service :

    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
    			let var_url_donnerConnection=this.AppService.getUrlDonnerConnection(var_email,var_pwd);
    			this.http.get(var_url_donnerConnection,this.AppService.getOptions())
    				.subscribe(				
    					data  => {Mydata=JSON.stringify(data); 	
    						let obj=JSON.parse(Mydata); 
    						let obj2=obj[Object.keys(obj)[0]];
    						let obj3=null;
    						eval("obj3 = ("+obj2+")");
     
    						//les identifiants renseignés sont-ils corrects?
    						if (obj3.result.hasOwnProperty("liberreur")) //ici, non
    						{
    							alert(obj3.result.liberreur);
    						}
    						else //identifiants ok
    						{
    							ws_retour_Connection.Identifiant=obj3.result.Identifiant;
    							ws_retour_Connection.Nom=obj3.result.Nom;
    							ws_retour_Connection.Prenom=obj3.result.Prenom;
    							ws_retour_Connection.AncienneteGroupe=obj3.result.AncienneteGroupe;
    							ws_retour_Connection.Adresse=obj3.result.Adresse;
    							ws_retour_Connection.Ville=obj3.result.Ville;
    							ws_retour_Connection.CodePostal=obj3.result.CodePostal;
     
    							//change page
    							this.navCtrl.push(PagePersonnellePage, {
    									DataUser: ws_retour_Connection
    							});
    							this.connection_email='';
    							this.connection_pwd='';
    						}
    					},
    						err=>alert(err)
    					);
    Ce code fonctionne parfaitement et je me demandais s'il était possible de le simplifier, dans le bloc subscribe, j'ai voulu mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    let obj3=data["_body"];
    Mais je n'arrive pas à accéder aux différents attributs de la valeur retournée par le web service, quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(JSON.stringify(data));
    J'ai ceci qui est affiché:
    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    {"_body":"{\"result\":{\"Identifiant\":\"7B659A22DF8901EB003400000711001F\",\"Nom\":\"xxxx\",\"Prenom\":\"xxxx\",\"AncienneteGroupe\":\"7 années, 9 mois  et 3 jours\",\"Adresse\":\"xxxxxxxxxx\",\"Ville\":\"xxxx\",\"CodePostal\":\"xxxxx\"}}","status":200,"ok":true,"statusText":"OK","headers":{"content-type":["application/json; charset=utf-8"]},"type":2,"url":"http://win-9u040a2kpbv:8081/sdata/WSMobiliteAdeleRH/DonnerConnexion?aLogin=00180&aMDP=xxxx"}

    et quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let obj3=data["_body"];
    alert(JSON.stringify(obj3));
    Ceci est affiché:
    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    "{\"result\":{\"Identifiant\":\"7B659A22DF8901EB003400000711001F\",\"Nom\":\"xxxx\",\"Prenom\":\"xxxx\",\"AncienneteGroupe\":\"7 années, 9 mois  et 3 jours\",\"Adresse\":\"xxxxxxxxxx\",\"Ville\":\"xxxx\",\"CodePostal\":\"xxxxx\"}}"

    Merci
    Chat alors!

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    juillet 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : juillet 2017
    Messages : 66
    Points : 108
    Points
    108

    Par défaut

    Tu n'utilises pas TypeScript?

    Tu peux définir une classe pour ton type d'objet et juste faire un renvoi de ta data comme étant un object de ta classe.

    Tu pourras ensuite l'utiliser comme tu veux dans ton component.

  3. #3
    Membre expérimenté Avatar de romulus001
    Homme Profil pro
    Développeur VB.NET et Windev (22) sur produits SAGE ligne 100
    Inscrit en
    mai 2009
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur VB.NET et Windev (22) sur produits SAGE ligne 100

    Informations forums :
    Inscription : mai 2009
    Messages : 1 103
    Points : 1 302
    Points
    1 302

    Par défaut

    A vrai dire, je ne connais pas la différence entre TypeScript et Angular (pas AngularJS), j'ai juste eu 6 mois de cours en javascript quand j'étais à l'université et c'était entre les années 2006 et 2007 une formation me sera proposée,
    Si je comprends bien, il serait possible de typer le retour de la fonction comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    this.http.get(var_url_donnerConnection,this.AppService.getOptions())
    .subscribe(data :  retourdonnerConnection=>{
    //TODO ok
    }, 
    {
    //TODO PAS ok
    });
    Chat alors!

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  4. #4
    Membre expérimenté Avatar de romulus001
    Homme Profil pro
    Développeur VB.NET et Windev (22) sur produits SAGE ligne 100
    Inscrit en
    mai 2009
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur VB.NET et Windev (22) sur produits SAGE ligne 100

    Informations forums :
    Inscription : mai 2009
    Messages : 1 103
    Points : 1 302
    Points
    1 302

    Par défaut

    Bon, j'ai trouvé, en fait, dans la variable JSON, certaines clés avaient pour valeur du texte et non du JSON, ce qui m'avait induit en erreur.

    Mon code simplifié :
    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
    let var_url_donnerConnection=this.AppService.getUrlDonnerConnection(var_email,var_pwd);
    			this.http.get(var_url_donnerConnection,this.AppService.getOptions())
    				.subscribe(				
    					data  => {obj=data[Object.keys(data)[0]]; //la valeur de la clé initiale, ie, la clé _body est une chaine, et non du JSON
    						MyData=JSON.parse(obj); 
     
    						//les identifiants renseignés sont-ils corrects?
    						if (MyData.result.hasOwnProperty("liberreur")) //ici, non
    						{
    							alert(MyData.result.liberreur);
    						}
    						else //identifiants ok
    						{
    							ws_retour_Connection.Identifiant=MyData.result.Identifiant;
    							ws_retour_Connection.Nom=MyData.result.Nom;
    							ws_retour_Connection.Prenom=MyData.result.Prenom;
    							ws_retour_Connection.AncienneteGroupe=MyData.result.AncienneteGroupe;
    							ws_retour_Connection.Adresse=MyData.result.Adresse;
    							ws_retour_Connection.Ville=MyData.result.Ville;
    							ws_retour_Connection.CodePostal=MyData.result.CodePostal;
     
    							//change page
    							this.navCtrl.push(PagePersonnellePage, {
    									DataUser: ws_retour_Connection
    							});
    							this.connection_email='';
    							this.connection_pwd='';
    						}
    					},
    						err=>alert(err)
    					);
    Chat alors!

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération des données via REST Web services
    Par Leaffy dans le forum Android
    Réponses: 5
    Dernier message: 09/04/2012, 22h40
  2. Réponses: 3
    Dernier message: 20/05/2008, 16h28
  3. Réponses: 5
    Dernier message: 11/04/2007, 18h35
  4. Split et bonne récupération des données
    Par n8ken dans le forum MFC
    Réponses: 8
    Dernier message: 01/07/2006, 12h25
  5. Réponses: 4
    Dernier message: 26/04/2005, 12h35

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