Question

Nos services Web sont distribués sur différents serveurs pour différentes raisons (par exemple, pour réduire le temps de latence du client), et ils ne sont pas toujours à jour. Plutôt que de lancer une exception lorsqu'une méthode n'existe pas parce que le service Web en question est trop ancien, il serait préférable que le client vérifie si le service répond à une méthode donnée avant de l'appeler. et sinon désactivez la fonctionnalité (ou contournez-la).

Y a-t-il un moyen de le faire?

Était-ce utile?

La solution

Testez le service Web pour vous assurer que ses signatures ne brisent pas. Lorsque vous écrivez du code qui rompt la signature de la méthode, vous saurez et pourrez ajuster les autres applications en conséquence.

Ou ne coupez pas les services Web et ne les publiez pas de manière à permettre leur version. Voir http://services.domain.com/MyService/V1.1/ Service.asmx (pour .NET) afin que vos applications utilisant la v1.1 ne se cassent pas lorsque vous publiez la v1.2 et apportiez des modifications radicales.

Je voudrais également vérifier l’utilisation d’un serveur UDDI interne si c’est vraiment un gros problème de gestion de vos services Web. Utiliser les pages vertes d’UDDI vous dira ce que vous voulez savoir sur le service.

Autres conseils

Obtenez le WSDL (ajoutez? wsdl à l'URL) - vous pouvez l'analyser comme bon vous semble.

Lorsque vous faites une requête SOAP, vous envoyez simplement une requête HTTP à un serveur. Si le serveur le comprend, il répondra avec un HTTP 200 et un code XML, sinon il vous enverra un code HTTP d'erreur (404, 500, ...)

Il n’existe aucun moyen général de demander l’existence d’une "méthode". exposé par un service web. Essayez d’utiliser le WSDL exposé s’il est automatique, ou essayez simplement d’utiliser la "méthode". et recherchez une erreur dans la réponse (vous ne devez pas envoyer d'exception à l'utilisateur ...)

De plus, je ne sais pas si je vous ai bien compris, mais vous envisagez de questionner le serveur deux fois, une fois pour vérifier si la méthode existe, et deuxièmement pour l'appeler si c'est le cas? Je voudrais juste vérifier l’erreur si ce n’est pas le cas et procéder normalement si c’est le cas.

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