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 Discussion :

[C#] WebService, comment l'utiliser?


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Par défaut [C#] WebService, comment l'utiliser?
    Bonjour,

    J'ai actuellement crée un WebService. Dans celui-ci, j'ai crée plusieurs classes.
    Afin de pouvoir instancier ces classes je dois obligatoirement les faire apparaitre dans mon fichier service.asmx .

    Je dois donc faire passer un objet vehicule à mon client. Apparement j'arrive à l'instancier mais le problème est que je n'ai pas tous les attribus de cet objet.

    D'où ma question est-que j'utilise mal le web service?
    Sinon comment faire pour avoir tous les attribus de ce même objet?

    mon code du 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
    public class Service1 : System.Web.Services.WebService
        {
     
     
          [WebMethod]
            public Vehicule lesInter(String numVehic)
            {
                Init.Initialisation();
                Vehicule vehicule = new Vehicule();
                foreach (Vehicule vehi in Init.listVehicule)
                {
                    if (vehi.racineV == numVehic)
                    {
                        vehicule = vehi;
                    }
                }
                return vehicule;
     
            }
        }
    et celui coté client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
     
     
                localhost1.Service1 serv = new testWebServiceMobile.localhost1.Service1();
                localhost1.Vehicule vehicule = new localhost1.Vehicule();
                vehicule = serv.lesInter("2");
     
            }
        }
    Merci de votre attention.

  2. #2
    Membre éclairé Avatar de SetaSensei
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    Bonjour,

    Quels sont les types des attributs que vous ne récupérez pas ?
    Vérifiez qu'ils soient bien serializables.

  3. #3
    Membre très actif Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Par défaut
    Je ne peut pas avoir acces a l'attribus racineV.

    Voilà ma classe :

    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
    44
    45
    46
    47
    48
    class Vehicule
        {
            #region attribus/Accesseurs
            private String id;
            public String idVehicue
            {
                get { return id; }
                set { id = value; }
            }
     
            private String racine;
            public String racineV
            {
                get { return racine; }
            }
     
            private Categorie obCat;
            public Categorie obCategorie
            {
                get { return obCat; }
                set { obCat = value; }
            }
     
            private List<Intervention> listInter;
            public List<Intervention> listIntervention
            {
                get { return listInter; }
                set { listInter = value; }
            }
            #endregion
     
     
            #region Constructeur
            public Vehicule()
            {
            }
     
            public Vehicule(String idVehicule, String racineV, Categorie obCategorie)
            {
                id = idVehicule;
                racine = racineV;
                obCat = obCategorie;
                listIntervention = new List<Intervention>();
            } 
            #endregion
     
     
            }
    Lorsque je rajoute un setters pour l'attribus racineV, je peux y avoir accès.
    Mais je ne comprend pas pourquoi il faudrait rajouter un setters.

  4. #4
    Membre éclairé Avatar de SetaSensei
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    Première chose :
    Pourquoi instanciez-vous un objet Vehicule dans vehicule vide alors que vous allez donner une valeur déjà instanciée ?

    Ensuite, et là je suppose uniquement, j'arrive à la limite de mes connaissances sur les mécaniques entre variables :
    vous faites
    Essayez de ré-instancier un nouvel objet avec les paramètres que vous utilisez dans vehi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                foreach (Vehicule vehi in Init.listVehicule)
                {
                    if (vehi.racineV == numVehic)
                    {
                        vehicule = new  Vehicule(vehi.idVehicue, vehi.racineV, vehi.obCategorie);
                    }
                }
    D'ailleurs, votre Init, c'est quoi ?

  5. #5
    Membre très actif Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Par défaut
    Init est ma classe static qui contient tous mes objets récupérer de la BDD.

    vehicule= (vehi.idVehicule, vehi.racineV.....)

    Ne change pas le problème du faite que sur mon client l'attribus racineV n'apparait pas. Pour le faire apparaitre il fau que j'implemente un setters a celui-ci et je ne comprend pas pourquoi.

  6. #6
    Membre éclairé Avatar de SetaSensei
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    Ah sur le client !

    A ce moment là, je comprends pourquoi :
    Vous sérialisez votre objet Vehicule; c'est à dire que vous n'envoyez pas d'objet, juste un contenu text/xml représentant votre objet Vehicule. A la réception, votre instance est recréée "from scratch" sur la machine cible (même si client = serveur).
    En gros, le moteur .Net recrée un objet Véhicule vide et réattribue les valeurs aux paramètres ... mais vous n'avez pas de setter pour racineV, donc il reste vide.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/02/2005, 14h39
  2. [Optimisation] Comment bien utiliser le StringBuffer?
    Par mathieu dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2004, 14h22
  3. Comment bien utiliser ce forum ?
    Par Alcatîz dans le forum Pascal
    Réponses: 0
    Dernier message: 21/04/2004, 16h37
  4. [scrapbook] comment l'utiliser ?
    Par Didier 69 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 16/04/2004, 17h28
  5. [INDY] -> IdIdentServer comment l'utiliser ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 9
    Dernier message: 06/08/2003, 16h00

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