Consommer un Web Service

De Wiki1000
(Différences entre les versions)
(Appeler le service.)
 
(4 révisions intermédiaires par un utilisateur sont masquées)
Ligne 1 : Ligne 1 :
 
{{#customtitle:Consommer un Web Service}}
 
{{#customtitle:Consommer un Web Service}}
 
==Web Service Client : Consommer un Web Service==
 
  
 
Nous allons maintenant réaliser le code nécessaire à l’appel du service.
 
Nous allons maintenant réaliser le code nécessaire à l’appel du service.
  
==Importer le WSDL==
+
===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.  
 
La première opération consiste à importer le WSDL, cette méthode permet de garantir que l’interface du service sera respectée.  
{| class="wikitable"
+
 
|-
+
{{info|Il est possible de décrire le modèle manuellement mais ceci ne garanti pas le respect du contrat WSDL.}}
|{{#images:image1.png|Web_Services_1000}}
+
|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 d’importation est accessible à partir de la racine des projets :  
Ligne 26 : Ligne 21 :
 
{{#images:image12.png|Web_Services_1000}}
 
{{#images:image12.png|Web_Services_1000}}
  
Types
+
*Types
 +
:Définit les types utilisés dans les messages du service
  
Définit les types utilisés dans les messages du service
+
*Messages
 +
:Définir les messages (paramètres des opérations) échangés
  
Messages
+
*portType
 +
:Définit les opérations offertes par le service
  
Définir les messages (paramètres des opérations) échangés
+
*Binding
 +
:Définit les informations de liens entres les descriptions du service et l’implémentation
  
portType
+
*Service
 
+
:Définit le service  
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éé :
 
Cette structure WSDL est transcrite en modèle intermédiaire qui reflète le modèle 1000 qui sera créé :
Ligne 58 : Ligne 48 :
 
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.  
 
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.
+
Voir le paragraphe sur les [[Domaines et paquet Ligne 1000 (ws)|domaines]].
  
 
{{#images:image15.png|Web_Services_1000}}
 
{{#images:image15.png|Web_Services_1000}}
Ligne 76 : Ligne 66 :
 
{{#images:image18.png|Web_Services_1000}}
 
{{#images:image18.png|Web_Services_1000}}
  
==Créer une classe de test.==
+
===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.  
 
Pour tester notre service nous allons implémenter une classe de test non persistante contenant une méthode echoString.  
Ligne 82 : Ligne 72 :
 
{{#images:image19.png|Web_Services_1000}}
 
{{#images:image19.png|Web_Services_1000}}
  
==Appeler le service.==
+
===Appeler le service.===
  
 
Le code appelant le service est le suivant :  
 
Le code appelant le service est le suivant :  
  
<pre>
+
<source lang='delphi'>
 
//Procedure echoString;
 
//Procedure echoString;
 
var inst:ICinteropService; sin,sout:string;
 
var inst:ICinteropService; sin,sout:string;
 
begin
 
begin
   inst := ClassManager.CreateInstance('ICinteropService');
+
   inst := ICinteropService.Create;
 
   sin := 'coucou';
 
   sin := 'coucou';
 
   inst.echoString(sin,sout);
 
   inst.echoString(sin,sout);
Ligne 97 : Ligne 87 :
 
     else showMessage('echoString OK');
 
     else showMessage('echoString OK');
 
end;
 
end;
</pre>
+
</source>
  
 
Une instance de la classe Support est créée et la méthode distante est appelée comme n’importe qu’elle méthode.
 
Une instance de la classe Support est créée et la méthode distante est appelée comme n’importe qu’elle méthode.
  
 
+
{{Footer|Web Services (ws)}}
{{PrecedentSuivant|Developpement:WebServices|Developpement:WebService2}}
+
[[Category:Web Services]]
 
+
[[Category:WebServices|1]]
+

Version actuelle en date du 22 août 2009 à 08:41

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.

Info-20px.png Note : 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 :

image10.png

L’assistant permet de spécifier un fichier WSDL ou une URL référençant un WSDL

image11.png

L’assistant présente ensuite le WSDL sous forme structuré, notez la structure d’un WSDL :

image12.png

  • 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éé :

image13.png

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.

image14.png

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.

image15.png

Notez l’utilisation du préfix de paquet IC qui préfixera les classes importées.

image16.png

Les opérations réalisées par l’importation :

image17.png

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.

image18.png

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.

image19.png

Appeler le service.

Le code appelant le service est le suivant :

//Procedure echoString;
var inst:ICinteropService; sin,sout:string;
begin
  inst := ICinteropService.Create;
  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.

Web Services (ws)Développement DSM

Outils personnels