2017-09-24 4 views
1

J'ai besoin de se connecter avec un service Web et c'est toutes les informations que j'ai:Toutes les étapes nécessaires à la connexion avec le service Web (WSDL fourni et par exemple SOAP)

  1. https://www.nameofthecompany.es:8443/webservices/functionIshouldcall?wsdl

  2. Exemple de appel:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:env="http://address.provided.by.the.company.es"> <soapenv:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:UsernameToken wsu:Id="UsernameToken-5"> <wsse:Username>Username</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Password</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soapenv:Header> <soapenv:Body> <env:functionIshouldcall> <env:parameter1></env:parameter1> </env:functionIshouldcall> </soapenv:Body> </soapenv:Envelope>

  3. Je sais thi La fonction s renvoie une chaîne;


C'est ce que je l'ai fait jusqu'à présent:

  • créé un service de référence en ajoutant simplement l'adresse WSDL indiquée au point 1.

  • a créé une instance de la webservice et appelé la fonction avec tous les paramètres nécessaires MAIS pas l'utilisateur et le mot de passe pour l'en-tête.

Comment dois-je procéder? Merci d'avance. Si vous avez besoin d'ajouter vos informations d'identification, vous pouvez commencer par:

Répondre

0

This Je suppose que vous devrez peut-être, puisque vous les avez en quelque sorte. La partie où vous ajoutez vos informations d'identification est celui ci-dessous:

UsernameToken userToken = new UsernameToken(userName, password, PasswordOption.SendHashed); 
Service1 serviceProxy = new Service1(); 
SoapContext requestContext = serviceProxy.RequestSoapContext; 
requestContext.Security.Tokens.Add(userToken); 

En bref:

  1. Ajoutez vos informations d'identification en les intégrant dans un jeton spécifique - dont le type appartient à l'espace de noms Microsoft.Web.Services2.Security.Tokens
  2. Créez un proxy pour votre service (dans l'exemple ci-dessus, serviceProxy)
  3. Activez l'accès à l'en-tête de la demande via votre service RequestSoapContext
  4. Ajouter le jeton à la demande

Aussi, je pense que vous pourriez être en mesure de sauter la partie « ? Wsdl » dans l'adresse où il se réfère à la spécification de services Web. Une fois ce qui précède est fait, vous pouvez essayer d'appeler la fonction et voir comment tout fonctionne: si la fonction doit retourner quelque chose, vérifiez si c'est ce que vous attendiez.

Bien sûr, n'oubliez pas de placer votre code dans un bloc try-catch, car vous devrez peut-être vérifier certaines exceptions et voir ce qui ne va pas.

+0

Les réponses liées à la liaison sont généralement [obsolètes] (http://meta.stackexchange.com/a/8259/204922) sur le dépassement de pile. Avec le temps, il est possible que les liens s'atrophient et deviennent indisponibles, ce qui signifie que votre réponse est inutile pour les utilisateurs dans le futur. Il serait préférable que vous puissiez fournir les détails généraux de votre réponse dans votre poste actuel, en citant votre lien comme référence. –

+0

Merci de me le rappeler; cependant j'ai inclus le code principal du lien comme contre-mesure: cela ne suffirait-il pas?Cordialement –

+0

autant que je peux comprendre - d'autres étapes de ce lien sont nécessaires aussi –