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

  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.

  7. #7
    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
    D'accord. C'est ce que je pensais mais je voulais confirmation.

    Donc je vais être obligé de mettre des setters sur tous mes attribus.. c'est pas très propres mais bon

    Je te remercie en tout cas .

+ 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