134 votes

Comment utiliser un WSDL

Je dois consommer un service Web. Ils m'ont envoyé le fichier WSDL. Que dois-je faire pour l'ajouter à mon site Web et commencer à l'utiliser comme proxy ? ( Si je le place sur un répertoire virtuel, il peut être découvert, mais m'accorde-t-il la connexion avec le véritable service Web ?)

11 votes

J'ai voté en faveur de cette question parce que je pense que les autres utilisateurs auraient intérêt à y trouver une réponse. Je cherchais exactement cette question et je suis heureux de l'avoir trouvée ici.

0 votes

Je comprends que MS a été impliqué dans le développement précoce de WSDL et peut donc comprendre les capacités de prise en charge dans VS et .NET, comme ci-dessous, ce qui est très utile. Cependant, étant donné que la question n'était pas vraiment spécifique à la plate-forme, est-il possible d'améliorer encore ce support pour fournir des moyens alternatifs de le faire (c'est-à-dire Java, Python, etc.) ?

146voto

marc_s Points 321990

Je lancerais Visual Studio, créerais un projet web (ou une application console - peu importe).

Pour .Net Standard :

  1. Je cliquerais avec le bouton droit de la souris sur le projet et je choisirais "Ajouter une référence de service" dans le menu déroulant. Ajouter le menu contextuel.
  2. Je cliquerais sur Avancé, puis sur Ajouter une référence de service.
  3. Je récupère le chemin complet du fichier wsdl et le colle dans la barre d'adresse. Ensuite, lancez la flèche (bouton "go").
  4. S'il y a une erreur en essayant de charger le fichier, alors il doit y avoir une url cassée et non résolue que le fichier doit résoudre comme indiqué ci-dessous : enter image description here Reportez-vous à cette réponse pour savoir comment réparer : Réponse de Stackoverflow à : Impossible de créer une référence de service pour le fichier wsdl

S'il n'y a pas d'erreur, il vous suffit de définir le NameSpace que vous souhaitez utiliser pour accéder au service et il sera généré pour vous.

Pour .Net Core

  1. Je ferais un clic droit sur le projet et je choisirais le service connecté dans le menu contextuel Ajouter.
  2. Je sélectionnerais Microsoft WCF Web Service Reference Provider dans la liste.
  3. J'appuierais sur Parcourir et sélectionnerais le fichier wsdl directement, je définirais l'espace de noms et je serais prêt à partir. Référez-vous à l'url de correction d'erreur ci-dessus si vous rencontrez une erreur.

L'une des méthodes ci-dessus générera un client WCF simple et très basique que vous pourrez utiliser. Vous devriez trouver une classe "YourservicenameClient" dans le code généré.

À titre de référence, le fichier cs généré se trouve dans votre Obj/debug(ou release)/XsdGeneratedCode et vous pouvez toujours trouver les dlls dans le dossier TempPE.

Le ou les services créés doivent avoir des méthodes pour chacune des méthodes définies dans le contrat WSDL.

Instanciez le client et appelez les méthodes que vous voulez appeler - c'est tout ce qu'il y a à faire !

YourServiceClient client = new YourServiceClient();
client.SayHello("World!");

Si vous devez spécifier l'URL distante (sans utiliser celle créée par défaut), vous pouvez facilement le faire dans le constructeur du client proxy :

YourServiceClient client = new YourServiceClient("configName", "remoteURL");

configName est le nom du point de terminaison à utiliser (vous utiliserez tous les paramètres à l'exception de l'URL), et l'option remoteURL est une chaîne représentant l'URL à laquelle se connecter (au lieu de celle contenue dans la configuration).

0 votes

Cela fonctionne bien. Une seule question : si j'ai le fichier wsdl sur ma machine, et que j'ajoute la référence à ce fichier. Lors de l'exécution de l'URL qu'il frappe est celui qui héberge le service web, ou dois-je spécifier le Binding et le EndPoint ?

1 votes

C'est vous qui décidez - par défaut, le code créé pour le proxy client aura l'URL contenue dans le WSDL - si vous avez besoin d'aller vers une autre URL, vous devez la spécifier vous-même.

0 votes

Pourquoi c'est si facile ? Il n'y a pas de piège ? :p Merci !

47voto

vidalsasoon Points 1856

Dans le studio visuel.

  • Créez ou ouvrez un projet.
  • Cliquez avec le bouton droit de la souris sur le projet depuis l'explorateur de solutions.
  • Sélectionnez "Ajouter une référence de service".
  • Collez l'adresse avec le WSDL que vous avez reçu.
  • Cliquez sur OK.

S'il n'y a pas d'erreur, vous devriez être en mesure de voir la référence du service dans le navigateur d'objets et toutes les méthodes associées.

9 votes

<3 Visual Studio.. Oui, c'est vraiment aussi simple que cela :)

3 votes

Le PO n'a pas d'adresse mais un dossier.

1 votes

Le fournisseur du service Web peut avoir désactivé le WSDL (security by obscurity), de sorte qu'il n'existe pas d'URL permettant d'accéder au WSDL et que l'ajout d'une référence Web dans VS ne fonctionnera pas. Cependant, le fournisseur veut que VOUS (je veux dire le PO) sachiez tout ce que vous devez savoir sur le contrat de service, c'est pourquoi ils ont envoyé le fichier WSDL. Maintenant le PO doit générer le code proxy à partir de ce fichier, la question est de savoir comment.

16voto

azheglov Points 3548

Utilisez Utilitaire WSDL.EXE pour générer un proxy de service Web à partir de WSDL.

Vous obtiendrez un long fichier source C# contenant une classe qui ressemble à ceci :

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="MyService", Namespace="http://myservice.com/myservice")]
public partial class MyService : System.Web.Services.Protocols.SoapHttpClientProtocol {
    ...
}

Dans votre code côté client, consommateur de services Web :

  1. instanciez MyService.
  2. définir sa propriété Url
  3. invoquer des méthodes Web

5 votes

Cela crée un service Web ASMX "à l'ancienne" - ces services sont obsolètes - il faut utiliser WCF à la place de nos jours.

10voto

Nedzad G Points 478

Si vous voulez ajouter une référence wsdl dans le fichier .Net Core projet il n'y a pas d'option "Ajouter une référence web".

Pour ajouter la référence wsdl, allez dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur l'élément de projet Références, puis cliquez sur l'icône Ajouter l'option Service connecté .

enter image description here

Cliquez ensuite sur "Microsoft WCF Web Service Reference" :

enter image description here

Entrez le chemin du fichier dans la zone de texte URI et importez le WSDL :

enter image description here

Il générera un simple, très basique client WCF et vous pour l'utiliser quelque chose comme ceci :

YourServiceClient client = new YourServiceClient();
client.DoSomething();

1 votes

Cette extension ne m'apparaît pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X