svcutil.exe – Comment obtenir WSDL

Je travaille avec une interface SOAP. Le fournisseur d’interface ne parvient pas à obtenir le WSDL complet (longue histoire). Ils m’ont demandé d’utiliser svcutil.exe pour générer tout ce dont j’ai besoin. De ce que je peux dire, svcutil.exe

  • nécessite Windows – Je n’ai pas de fenêtre Windows disponible
  • génère C # ou VisualBasic

Ce serait génial si on pouvait juste cracher un WSDL. Ou s’il y a quelque chose que je peux faire à partir de Linux, ce serait génial aussi.

Ai-je des options à partir d’ici, ou dois-je simplement attendre que le fournisseur me reçoive le WSDL.

Je suppose que la question est, étant donné une URL et des instructions pour utiliser svcutil.exe, comment puis-je écrire du code pour utiliser un service SOAP uniquement sous Linux?

Si vous utilisez Linux, vous pouvez le sauvegarder via curl

curl url > service.wsdl 

afin d’obtenir un WSDL WeatherForcast

  curl http://www.webservicex.net/WeatherForecast.asmx?WSDL > weatherForcast.wsdl 

@grantk a déjà démontré la méthode la plus simple: si vous savez où le WSDL est hébergé, vous pouvez simplement récupérer le document en utilisant votre outil de choix.

Mais comme vous l’avez demandé spécifiquement sur l’utilisation de SVCUtil: vous pouvez trouver une boîte Windows, utilisez SVCUtil pour récupérer le WSDL, puis retournez à votre stack Linux (et Java?) Et générez des proxies client à partir de ce WSDL pour appeler le service via votre service Web cadre de choix.

Si le service cible prend en charge WS-MetadataExchange ou XML Web Service Discovery , SVCUtil recherche et télécharge le fichier WSDL pour vous: consultez ce tutoriel sur le site Web MSDN de Microsoft.

À l’aide de l’exemple de service de prévision météo utilisé par @grantk , vous pouvez demander à SVCUtil d’interroger le service et de télécharger les métadonnées comme suit:

 svcutil /t:metadata http://www.webservicex.net/WeatherForecast.asmx 

(Je suis sûr qu’il existe des outils similaires pour le faire en utilisant WS-MetadataExchange dans le monde Linux, mais mon expérience est avec SVCUtil.)