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

C# Discussion :

[SOAP] Ajouter un SOAPHeader


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 4
    Par défaut [SOAP] Ajouter un SOAPHeader
    Bonjour tout le monde,

    je suis entrain de développer un client C# utilisant un service SOAP géré par une application Java. Jusque la, tout va bien, l'appel des fonctionnalité fonctionne niquel et tout et tout mais voila, j'aimerais faire une petite authentification via SOAPHeader.

    J'ai généré mon client automatiquement via le "Service References" proposé par Visual Studio 2012 et donc pour invoquer une méthode je fais simplement un truc genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SR.WebServiceJeuxEchecClient WSJEC = new SR.WebServiceJeuxEchecClient();
     
    WSJEC.addPlayer("Joueur1", "SonPassword", 3);

    Maintenant j'aurais aimé savoir comment interférer avec mes SOAPHeaders.

    J'ai essayé de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WSJEC.ClientCredentials.SupportInteractive = true;
    WSJEC.ClientCredentials.UserName.UserName = "test";
    WSJEC.ClientCredentials.UserName.Password = "password";

    Mais en analysant la requête qui arrive du coté java, on voit qu'il n'y a aucun SOAPHeaders.

    Quelqu'un aurait-il une idée? Un conseil? Ou alors je vais devoir écrire mon client manuellement?


    Merci bien,

    Earawyn

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 4
    Par défaut
    Donc voila, j'ai trouvé une solution... Je ne pense pas qu'elle soit idéal mais bon...


    La petite explication de cette solution :

    Au niveau du code java (dans les webmethodes):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        @WebMethod(operationName = "addPlayer")
        public String addPlayer(@WebParam(name = "user") String user, @WebParam(name = "pass") String pass, @WebParam(name = "role") Integer role,
                                @WebParam(name = "username", mode=Mode.IN, header=true) String username,
                                @WebParam(name = "password", mode=Mode.IN, header=true) String password) {
     
            System.out.println("Connexion with : "+username+" "+password);
     
            Login login = new Login(loginFacade.getNextID(),user,pass,role);
            loginFacade.create(login);
     
            return "added";
        }
    Ici, il suffit d'ajouter a la gros bourin les paramètres nécessaire de manière à ce que Visual de l'autre coté les trouve... (de manière a ce qu'on les retrouve dans la WSDL)


    Au niveau du C#, en ayant généré le WebService client avec le truc de références, il faut alors faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        SR.WebServiceJeuxEchecClient WSJEC = new SR.WebServiceJeuxEchecClient();
        SR.addPlayer temp = new SR.addPlayer();
        temp.user = textBox1.Text;
        temp.pass = textBox2.Text;
        temp.role = int.Parse(textBox3.Text);
     
        abel5.Text = label5.Text + " " + WSJEC.addPlayer("Test", "abcd", temp).@return;

    on obtiens alors les message suivant au niveau de glassfish (mon serveur publiant ma WSDL) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Infos: <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:password xmlns="http://WebService/" xmlns:h="http://WebService/">abcd</h:password><h:username xmlns="http://WebService/" xmlns:h="http://WebService/">Test</h:username></s:Header><s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><addPlayer xmlns="http://WebService/"><user xmlns="">Player1</user><pass xmlns="">Player1Password</pass></addPlayer></s:Body></s:Envelope>
    Infos: Connexion with : Test abcd
    Infos: <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:addPlayerResponse xmlns:ns2="http://WebService/"><return>added</return></ns2:addPlayerResponse></S:Body></S:Envelope>
    Et on voit que les headers ont été ajouté correctement


    Donc voila, j'espère que ça en aidera d'autre... ou si vous avez d'autres solutions n'hésitez pas...


    A la prochaine,
    Earawyn

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/04/2015, 10h04
  2. Ajouter des header soap dans une WSDL
    Par ThomasParis dans le forum Services Web
    Réponses: 0
    Dernier message: 02/08/2010, 16h14
  3. Ajouter un Header dans un message SOAP
    Par rori dans le forum Services Web
    Réponses: 0
    Dernier message: 15/01/2010, 09h43
  4. Ajout de SoapHeader
    Par imed0083 dans le forum Services Web
    Réponses: 0
    Dernier message: 24/04/2009, 15h33
  5. Réponses: 0
    Dernier message: 31/03/2009, 14h59

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