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#] utiliser deux méthodes différentes ayant le même nom!


Sujet :

Services Web

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Points : 346
    Points
    346
    Par défaut [c#] utiliser deux méthodes différentes ayant le même nom!
    Bonjour

    J'ai un service web dans lequel j'ai deux fois la même méthode, mais avec les paramètres différents comme suit:

    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
     
    public class Service1 : System.Web.Services.WebService
    {
    	[WebMethod(MessageName = "noparams")]
    	public XmlDocument geta()
            {
    	.....
            }
     
    	[WebMethod(MessageName = "withparams")]
    	public XmlDocument geta(string par1)
            {
    	.....
            }
     
    }
    Lorsque j'invoque la méthode geta(), j'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    http://.../Service1/Service1.asmx?op=noparams
     
    ou 
     
    http://.../Service1/Service1.asmx?op=withparams
    Alors que j'aimerais si possible avoir cela dans les cas (avec ou sans paramètre):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://.../Service1/Service1.asmx?op=geta
    Est-ce que cela faisable ou non?

    D'avance merci pour votre aide!

    Cédric

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Je crois que SOAP ne permet pas la surcharge de méthode (autant que je sache, c'est une limitation purement SOAP qui n'a rien à voir avec la plateforme utilisée que ce soit .Net - qu'on utilise asmx ou WCF - ou autre chose).

    On peut supposer que ce choix a été fait pour que des webservices puissent être consommés par des langages ne supportant pas la surcharge.

    Il est néanmoins possible d'utiliser la surcharge coté serveur en précisant dans l'attribut WebMethod un nom différent à utiliser coté consommateur (mais ça a peu d'interêt).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Points : 346
    Points
    346
    Par défaut
    Salut Bluedeep,

    merci pour l'info! J'ai quelqu'un qui travaille en JAVA, m'a informé qu'il pouvait appeler la même méthode en passant les paramètres soit en GET, soit en POST (doGet(), doPost()), avec pas forcément les mêmes paramètres, ce qui lui permet d'avoir deux comportements, c'est-à-dire, que si les paramètres sont passé en GET, la méthode exécutera telle partie de code et si les paramètres sont passés en POST, la méthode exécutera une partie de code!

    Est-ce qu'en c#, il existe un moyen de faire la même chose?

    D'avance merci pour votre aide!

    Cédric

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Cédric B. Voir le message
    merci pour l'info! J'ai quelqu'un qui travaille en JAVA, m'a informé qu'il pouvait appeler la même méthode en passant les paramètres soit en GET, soit en POST (doGet(), doPost()), avec pas forcément les mêmes paramètres, ce qui lui permet d'avoir deux comportements, c'est-à-dire, que si les paramètres sont passé en GET, la méthode exécutera telle partie de code et si les paramètres sont passés en POST, la méthode exécutera une partie de code!

    Est-ce qu'en c#, il existe un moyen de faire la même chose?
    Ce doit être possible avec des WS en WCF, mais en asp.net/asmx je ne crois pas (à vérifier).

    Mais quelle est la finalité ?

    EDIT : apparemment, cela semble possible de différencier la requête HTTP associée à la méthode avec la classe ScriptMethodAttribute. En revanche je n'ai aucune idée de son impact sur la surcharge. A tester.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 031
    Points : 5 476
    Points
    5 476
    Par défaut
    On dirait que par défaut c'est le post qui est activé , et en effet le scriptmethod permet d'y remedier.
    Le get passera juste les parametres a la suite de l'url.
    http://.../Service1/Service1.asmx?op...ar1=....&var2=...
    Par contre est ce qu'il est possible d'avoir les deux methodes juste avec le scriptMethod different, c'est a tester

  6. #6
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    La surcharge n'est pas autorisée avec SOAP. inutile donc de se fatiguer à vouloir penser que le language utilisé va changer les choses.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Points : 346
    Points
    346
    Par défaut
    Bonjour tout le monde,

    merci pour vos réponses! Comme mon cas, concerne les Services Web et comme cela a été signalé par Wolo Laurent, avec soap il n'est pas possible de surcharger la méthode!

    Pour contourner la chose, j'ai créer une autre méthode qui appelle la même méthode qu'en GET par exemple, mais sans le paramètre.

    Problème résolu!

    Cédric

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

Discussions similaires

  1. Utilisation de deux classes ayant le même nom
    Par Oosoos dans le forum Langage
    Réponses: 1
    Dernier message: 29/12/2010, 17h40
  2. Réponses: 6
    Dernier message: 16/08/2010, 17h42
  3. [Débutant]Deux Threads différent dans une même classe?
    Par Invité dans le forum Concurrence et multi-thread
    Réponses: 10
    Dernier message: 26/01/2007, 15h58
  4. Deux actions différentes dans un même formulaire
    Par gpsevasion dans le forum Langage
    Réponses: 3
    Dernier message: 25/01/2007, 00h30
  5. Réponses: 1
    Dernier message: 16/06/2006, 14h17

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