Consommer un Web Service
Sommaire |
Web Service Client : Consommer un Web Service
Nous allons maintenant réaliser le code nécessaire à l’appel du service.
Importer le WSDL
La première opération consiste à importer le WSDL, cette méthode permet de garantir que l’interface du service sera respectée.
Il est possible de décrire le modèle manuellement mais ceci ne garanti pas le respect du contrat WSDL. |
L’assistant d’importation est accessible à partir de la racine des projets :
L’assistant permet de spécifier un fichier WSDL ou une URL référençant un WSDL
L’assistant présente ensuite le WSDL sous forme structuré, notez la structure d’un WSDL :
Types
Définit les types utilisés dans les messages du service
Messages
Définir les messages (paramètres des opérations) échangés
portType
Définit les opérations offertes par le service
Binding
Définit les informations de liens entres les descriptions du service et l’implémentation
Service
Définit le service
Cette structure WSDL est transcrite en modèle intermédiaire qui reflète le modèle 1000 qui sera créé :
L’assistant d’importation crée systématiquement un paquet contenant l’interface du service, cette méthode est préférable car elle permet de bien cerner le contrat rempli par le service.
La référence du WSDL est enregistrée dans le descriptif du paquet ce qui permettra par la suite de mettre à jour le service.
Les Web Services utilisent les schémas XML qui définissent des domaines ; il arrive qu’un descripteur de service définisse plusieurs domaines. Cette page permet de sélectionner quels domaines inclure dans le paquet.
Voir le paragraphe sur les domaines.
Notez l’utilisation du préfix de paquet IC qui préfixera les classes importées.
Les opérations réalisées par l’importation :
L’assistant d’importation a créé un paquet 1000 de service distant et une classe « Support de Service distant » contenant une méthode distante « echoString ».
Une méthode distante représente un proxy local de la méthode implémentée par le fournisseur de service, une méthode distante ne doit donc pas être « codée » localement.
Créer une classe de test.
Pour tester notre service nous allons implémenter une classe de test non persistante contenant une méthode echoString.
Appeler le service.
Le code appelant le service est le suivant :
//Procedure echoString; var inst:ICinteropService; sin,sout:string; begin inst := ClassManager.CreateInstance('ICinteropService'); sin := 'coucou'; inst.echoString(sin,sout); if sin<>sout then showMessage('echoString failed') else showMessage('echoString OK'); end;
Une instance de la classe Support est créée et la méthode distante est appelée comme n’importe qu’elle méthode.