Webservice et SOAP header

Signaler
Messages postés
9
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
14 octobre 2008
-
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
-
Bonjour, mon problème est le suivant:
je dois utiliser un web service qui est accessible qu'après identification. Pour celà j'utilise un autre web service qui, avec un login et un mot de passe me renvoie un sessionID ensuite je précise le numéro du service auquel je veux accéder dans mon web service et avec ce numéro et le sessionID, j'obtiens un ticket me permettant d'accéder à mon fameux service. Ce ticket me fournit 3 infos:
- une string indiquant l'adresse du serveur
- une string contenant le ticket (l'identification)
- un entier pour le timeout du ticket

Seulement voilà j'obtiens bien le ticket mais ensuite je ne sais pas comment l'injecter dans le web service, aucune méthode n'existe pour celà, juste un attribut:

public @string sessionKey;

@string est une classe définie dans le web service:

public class string : System.Web.Services.Protocols.SoapHeader

et a seulement un attribut en plus de ceux dont elle hérite:

public string[] Text;

J'ai l'impression qu'il faut injecter mon ticket dans cet attribut Text seulement lors de la 1ère requête au web service j'ai une exception: "Missing session ticket"

Help me pleaaaase

1 réponse

Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
20
salut,

normalement, tu as du côté :
-> une classe MachinHeader qui dérive de SoapHeader et qui a un membre public du type que tu veux, dans ton cas string[]
-> la classe de ton weservice qui a une var public MachinHeader machin
-> les méthodes de ton webservice qui attendent une entête MachinHeader doivent avec l'attribut <SoapHeader("MachinHeader")>
-> ensuite tu peux te servir de la var machin pour accéder à l'header (vérif si pas null)

et côté client, dans ton proxy, par ex ws, tu as un membre MachinHeader de type MachinHeader que tu dois initialiser avec un new MachinHeader et affecter à son membre publique ton string[] initialisé...

sinon, je ne trouve pas judicieux le choix du nom de l'entête "string" étant un type existant...mais peut être que cela ne vient pas de tes contraintes de webservice existant...

ShareVB