TUTORIELS 
ASP.NET : consommer un service Web
Une application ASP.NET peut simplement faire appel à un service en ligne grâce au framework .NET. Explication.  (2 février 2004)
 
Forums
* Discutez en sur les forums
Nous avons montré dans notre article "Construire un service Web" combien l'architecture .NET offrait des facilités pour créer des services Web. Nous allons voir ici qu'il en est de même lorsqu'il s'agit de consommer un service.

Première étape
Avant toute chose, il nous faut un service à consommer ! Si vous en avez un sous la main, cherchez son contrat WSDL. Sinon, il vous faudra partir en quête d'un service au moyen d'un répertoire UDDI. Les principaux, gérés par Microsoft, IBM, SAP ou NEC (ce dernier en Japonais) sont accessibles depuis l'adresse uddi.org, gérée par l'organisme OASIS. En revanche, chaque site ne contient pas forcément les même informations, donc n'hésitez pas à les fouiller les uns après les autres jusqu'à trouver le service qui vous convient.

Pour cet article, nous allons simplement envoyer une requête Whois pour un site Web, à l'aide d'un service trouvé l'UDDI d'IBM, wsWhoIs.

Deuxième étape
Une fois le contrat WSDL récupéré (ou du moins son URL), il faut le rendre compréhensible à .NET, pour qu'il puisse en exploiter les méthodes : nous utilisons pour cela un "proxy", une passerelle entre votre programme et le service. Pour construire un proxy pour un service donné, le .NET SDK propose un outil dédié, wsdl.exe, très simple d'utilisation : dans DOS (l'invite de commande), il nous suffit d'appeller cet outil, suivi de l'emplacement du contrat, du langage avec lequel nous allons appeller le service, et de l'espace de nom que l'on veut lui assigner dans notre application. Pour wsWhoIs en C#, cela donnera :

wsdl.exe http://www.joshuaz.com/webservices/wsWhois.asmx?WSDL
/n:QuiEst /l:cs /o:wsWhoIs.cs


Les options par défaut étant "cs" pour /l (langage) et le nom du service pour /o (fichier de sortie), nous aurions pu ici ne préciser que l'option /n ...

Nous obtenons dans le répertoire courant le code source wsWhois.cs, qu'il est fortemment déconseillé de toucher.

Troisième étape
La création du proxy n'est pas exactement terminée : pour pouvoir l'appeller dans le notre code, il nous faut encore compiler le code source précédemment généré par wsdl.exe en une DLL. Pour ce faire, il suffit d'utiliser le C# Compiler (dans notre cas), et de combiner notre code source aux DLL utilisées pour appeller un service, à savoir SYSTEM.DLL, SYSTEM.WEB.SERVICES.DLL et SYSTEM.XML.DLL.

csc.exe /target:library /out:wsWhois.dll
/reference:System.dll,System.web.services.dll,System.XML.dll
wsWhoIs.cs


Vous obtenez, dans le répertoire courant, le fichier wsWhois.dll. Ici encore, nous aurions pu ne pas utiliser l'argument /out, qui est utilisé par défaut.

Quatrième étape
Il est temps (enfin!) d'écrire un peu de code C#... Nous utiliserons ici l'outil WebMatrix. Nous pouvons vous le dire maintenant : les trois étapes précédentes auraient pu être réalisées par l'outil "Web Service Proxy Generator" de WebMatrix...
Le final est rapide :

1) Créez un nouveau fichier de type "Class", nommé "QuiEst.cs" et en C#.
2) Entrez-y le code suivant :
using System;

public class QuiEst
  {
  public static void Main (string[] args)
    {
    wsWhois QuiService = new wsWhois();

    Console.Write("Entrez le nom du serveur (.com ou .net) : ");
    string Serveur = Console.ReadLine();

    string Resultat = QuiService.GetWhoIs("whois.internic.net", Serveur);

    Console.Write(Resultat);
    }
  }

Nous savons comment parler avec le proxy grâce au service lui-même : en allant sur l'adresse du service, nous obtenons une page nous donnant les méthodes acceptées par celui-ci. Celle qui nous intéresse est la troisième, GetWhoIs. En cliquant sur son lien, nous voyons qu'il prend en argument deux chaînes : le serveur WhoIs à utiliser, et le nom du site à tester. Il renvoi une chaîne, le résultat. Il ne nous restait plus qu'à intégrer ces informations dans le code de QuiEst.cs...

3) Compilez le fichier avec csc /r:wsWhois.dll QuiEst.cs (dans l'invite de commande).

4) Testez-le, toujours dans l'invite de commande, en tapant simplement QuiEst, et suivez les instructions... Le programme se connecte au service via le proxy que vous lui avez indiqué, et vous renvoi les données que le serveur peut vous envoyer.

Voici notre code source.

 
[ Xavier BorderieJDNet
 
Accueil | Haut de page