Question

Existe-t-il un moyen simple d’interroger un service Web pour savoir quels messages il prend en charge? L'application C # .NET sur laquelle je travaille doit être capable de gérer une version antérieure du service Web, qui ne met pas en œuvre le message que j'essaie d'envoyer. Le service Web n’expose pas de numéro de version. Plan B indique donc si le message est défini.

Je suppose que je peux simplement faire une requête HTTP pour le WSDL et l’analyser, mais avant de suivre cette voie, je veux être sûr qu’il n’ya pas une approche plus simple.

Mise à jour: J'ai décidé de me procurer le WSDL et de recevoir des messages directement. Voici le brouillon pour recevoir tous les messages:

HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create( "http://your/web/service/here.asmx?WSDL" );
webRequest.PreAuthenticate = // details elided
webRequest.Credentials = // details elided
webRequest.Timeout = // details elided
HttpWebResponse webResponse = (HttpWebResponse) webRequest.GetResponse();

XPathDocument xpathDocument = new XPathDocument( webResponse.GetResponseStream() );
XPathNavigator xpathNavigator = xpathDocument.CreateNavigator();

XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager( new NameTable() );
xmlNamespaceManager.AddNamespace( "wsdl", "http://schemas.xmlsoap.org/wsdl/" );

foreach( XPathNavigator node in xpathNavigator.Select( "//wsdl:message/@name", xmlNamespaceManager ) )
{
    string messageName = node.Value;
}
Était-ce utile?

La solution

Je suis presque sûr que WSDL est le moyen de le faire.

Autres conseils

L'analyse du WSDL est probablement le moyen le plus simple de procéder. En utilisant WCF, il est également possible de télécharger le WSDL au moment de l’exécution, d’exécuter svcutil dessus via le code et d’obtenir un proxy généré dynamiquement dont vous pouvez vérifier la structure. Voir http: //blogs.msdn .com / vipulmodi / archive / 2006/11/16 / dynamic-programming-with-wcf.aspx pour un exemple de proxy généré à l'exécution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top