Web Reference, WSE et custom Header
Bonjour à tous,
Je dois appeler un Web Service à partir d'un client C# (je n'ai pas la main sur ce web service). J'ai donc ajouter une web référence à mon projet et fait pointer sur mon WSDL.
Sauf que ce web service requiert un header bien particulier, qui n'est pas définit dans le fichier wsdl.
Voici le header que je veux avoir :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <soapenv:Header>
<!-- Entete WS-Security -->
<wsse:Security soapenv:mustUnderstand="1">
<wsse:UsernameToken>
<wsse:Username>identifiant</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">mot de passe</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
<!-- Entete MDW -->
<ag:unNoeud>val</ag:unNoeud>
<wsa:unParent>
<ag:unFils>
<ag:uneValeur>val</ag:uneValeur>
<ag:uneAutre>val</ag:uneAutre>
</ag:unFils>
</wsa:unParent>
<ag:encoreUneValeur/>
</soapenv:Header> |
Première étape, ajouter un élément WS-Security...OK j'ai bien mon noeud dans le header avec le token.
Pour les autres, je me suis dit que j'allais créer un header héritant de SoapHeader que je passerais ensuite à la méthode :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| //Mon header perso
public class MyHeader : SoapHeader
{
public string test;
}
...
//Mon web service
public partial class MonWebService: Microsoft.Web.Services2.WebServicesClientProtocol {
public MyHeader header;
...
//Ajout du custom header à la méthode souhaitée
[SoapHeader("header",Direction=SoapHeaderDirection.InOut)]
public string MaWebMethode(...) {
...
} |
Sauf qu'en faisant cela, j'obtiens un header du style :
Code:
1 2 3 4 5 6 7 8 9 10 11
| <soap:Header>
<MyHeader >
<test>blabal</test>
</MyHeader>
<wsse:Security soap:mustUnderstand="1">
<wsse:UsernameToken >
<wsse:Username></wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"></wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header> |
Ce qui pourrait m'aller pour une partie de l'entête MDW, mais comment construire les nœuds "simples" comme
Citation:
<ag:unNoeud>val</ag:unNoeud>
qui n'a d'autres parents que <soap:Header>
Merci d'avance.