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

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

    Informations forums :
    Inscription : mai 2009
    Messages : 1 059
    Points : 1 260
    Points
    1 260

    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
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : juillet 2017
    Messages : 40
    Points : 79
    Points
    79

    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 éprouvé Avatar de romulus001
    Homme Profil pro
    Développeur VB.NET et Windev (21) sur produits SAGE
    Inscrit en
    mai 2009
    Messages
    1 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : mai 2009
    Messages : 1 059
    Points : 1 260
    Points
    1 260

    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 éprouvé Avatar de romulus001
    Homme Profil pro
    Développeur VB.NET et Windev (21) sur produits SAGE
    Inscrit en
    mai 2009
    Messages
    1 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : mai 2009
    Messages : 1 059
    Points : 1 260
    Points
    1 260

    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, 21h40
  2. Réponses: 3
    Dernier message: 20/05/2008, 15h28
  3. Réponses: 5
    Dernier message: 11/04/2007, 17h35
  4. Split et bonne récupération des données
    Par n8ken dans le forum MFC
    Réponses: 8
    Dernier message: 01/07/2006, 11h25
  5. Réponses: 4
    Dernier message: 26/04/2005, 11h35

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