Création et déploiement de Services Web à l'aide de Visual Studio .NET et d'Office XP

Frank C. Rice
Microsoft Corporation
Mai 2002

Concerne :
Microsoft® Visual Studio® .NET
Microsoft Access 2002
Microsoft Office XP Web Services Toolkit

Résumé : Cet article explique comment créer un exemple de service Web XML dans Microsoft Visual Studio .NET et le déployer. Pour accéder à ce service Web XML, nous utiliserons un formulaire Microsoft Access 2002.

Sommaire
  • Introduction
  • Présentation des Services Web
  • Services Web dans Visual Studio .NET
  • Création du service Web XML
  • Création de l'application cliente
  • Test du service Web XML
  • Conclusion

Introduction

Les Services Web permettent aux applications d'échanger des données et des fonctionnalités de traitement. En règle générale, un service Web XML est une bibliothèque de liaison dynamique (DLL, Dynamic-Link Library) qui réside sur un serveur Web et dont les méthodes peuvent être appelées par Internet. Dans un tel scénario, l'application cliente communique avec le service Web XML par un échange de messages SOAP via le protocole HTTP (Hypertext Transfer Protocol).

Le but de cet article est de vous montrer comment créer, déployer un service Web XML et y accéder à l'aide de Microsoft Visual Studio .NET. Tout d'abord, nous allons configurer Internet Information Server (IIS) sur le serveur Web qui hébergera le service Web XML.

Remarque : IIS 4.0 est compatible avec Microsoft Windows NT® 4.0 Server. IIS 5.0 est compatible et installé par défaut avec Windows® 2000 Server.

Ensuite, nous utiliserons Visual Studio. NET pour créer un projet de service Web ASP.NET. Nous ajouterons à ce projet le code nécessaire pour implémenter ce service Web XML. Notre exemple de service Web XML acceptera les codes à deux lettres des États américains et renverra les informations suivantes sur cet État : nom complet, capitale, date et ordre d'admission dans l'union. Ensuite, nous testerons le service Web XML dans Visual Studio .NET. Pour terminer, nous créerons une application cliente sous la forme d'un formulaire Microsoft Access 2002 pour accéder au service Web XML et afficher les résultats.

Présentation des Services Web

Tout d'abord, posons-nous la question suivante : de quoi avons-nous besoin pour créer et utiliser un service Web XML? En règle générale, un utilisateur ordinaire commence par se rendre sur un site Web qui héberge un registre de Services Web, tel que l'annuaire UDDI (Universal Description, Discovery and Integration), pour consulter les différents Services Web disponibles. Le service de registre lui fournit des renseignements concernant les différents Services Web disponibles, tels que le nom de la société qui héberge le service, l'URL (Universal Resource Locator) du site Web de cette société ainsi que l'emplacement du fichier WSDL grâce auquel il pourra déterminer les détails du service Web XML.

Un développeur peut alors utiliser les informations extraites du fichier WSDL pour développer une application cliente permettant d'accéder au service Web XML et d'en traiter les résultats. Il définit en premier lieu une référence à la bibliothèque Microsoft SOAP (mssoap1.dll), accessible après avoir installé SOAP Toolkit 2.0.

La bibliothèque Microsoft SOAP contient des composants côté client (et côté serveur) qui permettent à une application d'appeler des méthodes de service Web XML. Le développeur peut ensuite définir une référence Web (au moyen de l'outil Web Service References) vers le fichier WSDL.

Remarque : L'outil Web Service References est compris dans Office XP Web Services Toolkit Lien non MSDN France Site en anglais, disponible gratuitement sur le site MSDN.

L'outil Web Service References crée une classe proxy (représentation locale du service Web XML dans l'application cliente), ce qui facilite la communication avec le service Web XML au moyen du protocole HTTP. Cette communication est constituée de requêtes SOAP émanant de l'application cliente et de réponses SOAP en provenance du service Web XML. Le serveur qui implémente le service Web XML utilise un " écouteur " pour la réception et l'analyse de la requête SOAP. Cet écouteur est constitué de code résidant dans le fichier WSDL ou dans un fichier ASP (Active Server Pages) qui implémente un gestionnaire. Dès qu'il détecte une requête SOAP issue de l'application cliente, il analyse celle-ci, appelle la méthode du service Web XML en lui passant éventuellement des paramètres et reçoit les résultats des appels de la méthode. Ensuite, il enveloppe la réponse dans un nouveau message SOAP et l'envoie à l'application cliente, le composant côté client analysant et traitant ensuite les résultats.

Jusqu'ici, nous avons examiné comment la consommation des Services Web s'effectue côté client. Penchons nous maintenant sur le côté serveur. Pour créer et implémenter un service Web XML sur un serveur Web, vous avez besoin des éléments suivants :

  • une DLL qui contient les fonctions (méthodes) que vous souhaitez rendre disponibles comme service Web XML ;
  • un procédé permettant de communiquer aux clients intéressés par le service Web XML les fonctionnalités offertes par ce dernier, le nom des méthodes, les paramètres d'entrée et de sortie utilisés et toute autre information pertinente au sujet du service (figurant dans un fichier WSDL).

Tout ce dont vous avez besoin pour utiliser un service Web XML, c'est de créer l'application cliente qui accède au service en utilisant les informations du fichier WSDL et de veiller à ce que la bibliothèque Microsoft SOAP soit installée sur chaque ordinateur client. En fonction de l'environnement de développement dans lequel vous créez le client, vous devrez peut-être avoir recours à des outils supplémentaires.

Services Web dans Visual Studio .NET

Microsoft Visual Studio .NET simplifie la création et le déploiement de Services Web en automatisant la création de plusieurs des fichiers nécessaires à leur implémentation. Ainsi, il met à votre disposition un type de projet Service Web ASP.NET qui facilite la création et la manipulation des services XML Web.

Lorsque vous créez un projet Service Web ASP.NET, Visual Studio .NET construit automatiquement, sur le serveur Web (nous supposons que vous développez le service sur un serveur Web), le projet et les fichiers nécessaires à l'implémentation du service Web XML. Par exemple, il crée automatiquement un fichier .asmx qui contient les classes et les méthodes ajoutant des fonctionnalités au service Web XML.

Remarque : Les classes de service Web XML sont semblables aux classes ordinaires, à l'exception des classes Web auxquelles l'attribut [WebMethod] est ajouté en guise de préfixe.

De plus, Visual Studio .NET crée les fichiers WSDL et WSML. Il affiche même une page d'informations contenant les méthodes et les paramètres utilisés dans le service Web XML. Vous pouvez également utiliser cette page pour tester le service.

Côté client, vous pouvez utiliser Microsoft Visual Basic® 6.0, Visual Studio .NET ou une application Office (telle qu'Access ou Microsoft Excel) pour créer l'application cliente qui consommera le service Web XML. Tout d'abord, vous devez référencer le fichier WSDL. Si vous utilisez Visual Studio .NET, référencez le fichier .asmx au moyen d'une chaîne de requête de type https://localhost/StatesInformationWS/StatesInformation.asmx?wsdl. Si vous recourez à Visual Basic ou une application Office, définissez une référence Web au fichier WSDL au moyen de l'outil Web Service References qui est inclus dans le kit Office XP Web Services Toolkit Lien non MSDN France Site en anglais, téléchargeable gratuitement sur MSDN.

L'outil Web Service References extrait les informations du fichier WSDL et crée une classe proxy Microsoft Visual Basic pour Applications (VBA). Cette classe proxy est une représentation locale du service Web XML dans l'application cliente. De plus, étant donné que la classe de service Web XML est liée à la classe proxy de l'application cliente, la fonctionnalité Microsoft IntelliSense® vous facilite la tâche lors de la création d'objets sur le client. Pour pouvoir commencer à utiliser le service Web, il ne vous reste plus qu'à ajouter dans votre application le code nécessaire pour appeler les méthodes de la classe proxy.

Que diriez-vous à présent de mettre tout ceci en pratique et de créer un service Web XML ?

Création du service Web XML

Pour déployer le service Web XML, vous avez besoin d'un serveur Web, tel que Microsoft Windows® 2000 Server avec IIS. Ensuite, vous devez créer une racine virtuelle (également appelée répertoire virtuel) sur le serveur Web. Elle contiendra les fichiers du service Web XML que vous allez créer.

Configuration d'Internet Information Server
  1. Créez un nouveau dossier sur le serveur Web (vous pourriez également utiliser un dossier existant). Pour cet exemple, je vous conseille de créer un nouveau dossier (par exemple, C:\StatesInfoWS).

  2. Ensuite, configurez une racine virtuelle dans IIS. Dans le Panneau de configuration, double-cliquez sur Outils d'administration puis sur Gestionnaire des services Internet, pour afficher la console IIS.

  3. Dans le volet gauche, développez le nœud contenant le nom du serveur Web, cliquez avec le bouton droit sur le nœud Site Web par défaut, pointez sur Nouveau et cliquez sur Répertoire virtuel. L'Assistant Création de répertoire virtuel s'ouvre.

  4. Dans l'écran Assistant Création de répertoire virtuel, cliquez sur Suivant.

  5. Dans l'écran Alias du répertoire virtuel, tapez StatesInfoWS et cliquez sur Suivant.

  6. Dans l'écran Répertoire de contenu du site Web, saisissez le chemin du dossier que vous avez créé à l'étape 1 et cliquez sur Suivant.

  7. Dans l'écran Autorisations d'accès, activez les cases à cocher Lire et Exécuter les scripts. Cliquez sur Suivant, puis sur Terminer.

Création du projet ASP.NET

Nous allons maintenant créer un nouveau projet de service Web ASP.NET dans Visual Basic .NET. Nous l'appellerons StatesInformationWS. Nous créerons également un module de classe nommé StatesInformation avec la méthode GetStateInfo.

  1. Démarrez Visual Studio .NET. Sur la page de démarrage, cliquez sur Nouveau projet.

  2. Dans la boîte de dialogue Nouveau projet, sélectionnez Projets Visual Basic dans la liste de Types de projets et cliquez sur Service Web ASP.NET.

  3. Dans la zone Emplacement, tapez https://localhost/StatesInfoWS. Remarquez que, par défaut, les projets de service Web XML sont enregistrés dans le répertoire virtuel localhost du serveur Web.

  4. Cliquez sur OK. Votre projet contiendra un module nommé Service1.asmx, un fichier de configuration et un fichier de découverte (.vsdisco). Le fichier de configuration contient des informations de configuration destinées au serveur Web, alors que le fichier de découverte comprend des informations permettant à d'autres applications de se connecter au serveur, de localiser le service Web XML et de consulter les noms et la syntaxe de ses membres.

  5. Tout d'abord, supprimez le module Service1.asmx puisque vous allez créer votre propre fichier à l'étape suivante. Sélectionnez le fichier, cliquez dessus avec le bouton droit et sélectionnez Supprimer. Cliquez sur OK dans la boîte de dialogue de confirmation.

  6. Vous allez maintenant ajouter votre propre fichier .asmx. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur StatesInformationWS, sélectionnez Ajouter, puis Ajouter un nouvel élément.

  7. Dans la boîte de dialogue Ajouter un nouvel élément, sous Éléments de projets Web, sélectionnez l'icône Service Web et tapez StatesInformation.asmx. Cliquez sur OK.

  8. Cliquez avec le bouton droit sur StatesInformation.asmx et sélectionnez Afficher le code.

  9. Ajoutez le code suivant sous l'instruction Web Services Designer Generated Code. Il s'agit de la méthode utilisée pour ajouter des fonctionnalités au service Web XML :

<WebMethod()> Public Function GetStateInfo(ByVal strAbbreviatedName As String) As String 'Purpose: This procedure is used to simulate an ' XML Web service. The procedure accepts ' the two-digit name for a state and ' returns information about that state. 'Accepts: strAbbreviatedName - the two-digit state ' name. 'Returns: Information about the state including ' its full name, capital, date admitted ' to the union, and order of admission. '

Select Case UCase(Trim(strAbbreviatedName)) Case "AL" Return "Name: Alabama " & _ "Capital: Montgomery " & _ "Admitted: December 14, 1819 " & _ "Order: 22" Case "AK" Return "Name: Alaska " & _ "Capital: Juneau " & _ "Admitted: January 3, 1959 " & _ "Order: 49" Case "AZ" Return "Name: Arizona " & _ "Capital: Phoenix " & _ "Admitted: February 14, 1912 " & _ "Order: 48" Case "AR" Return "Name: Arkansas " & _ "Capital: Little_Rock " & _ "Admitted: June 15, 1836 " & _ "Order: 25" Case "CA" Return "Name: California " & _ "Capital: Sacramento " & _ "Admitted: September 9, 1850 " & _ "Order: 31" Case "CO" Return "Name: Colorado " & _ "Capital: Denver " & _ "Admitted: August 1, 1876 " & _ "Order: 38" Case "CT" Return "Name: Connecticut " & _ "Capital: Hartford " & _ "Admitted: January 9, 1788 " & _ "Order: 5" Case "DC" Return "Name: District_of_Columbia " & _ "Capital: Not_Applicable " & _ "Admitted: N/A " & _ "Order: N/A" Case "DE" Return "Name: Delaware " & _ "Capital: Dover " & _ "Admitted: December 7, 1787 " & _ "Order: 1" Case "FL" Return "Name: Florida " & _ "Capital: Tallahassee " & _ "Admitted: March 3, 1845 " & _ "Order: 27" Case "GA" Return "Name: Georgia " & _ "Capital: Atlanta " & _ "Admitted: January 2, 1788 " & _ "Order: 4" Case "HI" Return "Name: Hawaii " & _ "Capital: Honolulu " & _ "Admitted: August 21, 1959 " & _ "Order: 50" Case "ID" Return "Name: Idaho " & _ "Capital: Boise " & _ "Admitted: July 3, 1890 " & _ "Order: 43" Case "IL" Return "Name: Illinois " & _ "Capital: Springfield " & _ "Admitted: Decemer 3, 1818 " & _ "Order: 21" Case "IN" Return "Name: Indiana " & _ "Capital: Indianapolis " & _ "Admitted: December 11, 1816 " & _ "Order: 19" Case "IA" Return "Name: Iowa " & _ "Capital: Des_Moines " & _ "Admitted: December 28, 1846 " & _ "Order: 29" Case "KS" Return "Name: Kansas " & _ "Capital: Topeka " & _ "Admitted: January 29, 1861 " & _ "Order: 34" Case "KY" Return "Name: Kentucky " & _ "Capital: Frankfort " & _ "Admitted: June 1, 1792 " & _ "Order: 15" Case "LA" Return "Name: Louisiana " & _ "Capital: Baton_Rouge " & _ "Admitted: April 30, 1812 " & _ "Order: 18" Case "ME" Return "Name: Maine " & _ "Capital: Augusta " & _ "Admitted: March 15, 1820 " & _ "Order: 23" Case "MD" Return "Name: Maryland " & _ "Capital: Annapolis " & _ "Admitted: April 28, 1788 " & _ "Order: 7" Case "MA" Return "Name: Massachesetts " & _ "Capital: Boston " & _ "Admitted: February 6, 1788 " & _ "Order: 6" Case "MI" Return "Name: Michigan " & _ "Capital: Lansing " & _ "Admitted: Jan 26, 1837 " & _ "Order: 26" Case "MN" Return "Name: Minnesota " & _ "Capital: St._Paul " & _ "Admitted: May 11, 1858 " & _ "Order: 32" Case "MS" Return "Name: Mississippi " & _ "Capital: Jackson " & _ "Admitted: December 10, 1817 " & _ "Order: 20" Case "MO" Return "Name: Missouri " & _ "Capital: Jefferson_City " & _ "Admitted: August 10, 1821 " & _ "Order: 24" Case "MT"

Return "Name: Montana " & _ "Capital: Helena " & _ "Admitted: November 8, 1889 " & _ "Order: 41" Case "NE" Return "Name: Nebraska " & _ "Capital: Lincoln " & _ "Admitted: March 1, 1867 " & _ "Order: 37" Case "NV" Return "Name: Nevada " & _ "Capital: Carson_City " & _ "Admitted: October 31, 1864 " & _ "Order: 36" Case "NH" Return "Name: New_Hampshire " & _ "Capital: Concord " & _ "Admitted: June 21, 1788 " & _ "Order: 9" Case "NJ" Return "Name: New_Jersey " & _ "Capital: Trenton " & _ "Admitted: December 18, 1787 " & _ "Order: 3" Case "NM" Return "Name: New_Mexico " & _ "Capital: Santa_Fe " & _ "Admitted: January 6, 1912 " & _ "Order: 47" Case "NY" Return "Name: New_York " & _ "Capital: Albany " & _ "Admitted: July 26, 1788 " & _ "Order: 11" Case "NC" Return "Name: North_Carolina " & _ "Capital: Raleigh " & _ "Admitted: November 21, 1789 " & _ "Order: 12" Case "ND" Return "Name: North_Dakota " & _ "Capital: Bismarck " & _ "Admitted: November 2, 1889 " & _ "Order: 39" Case "OH" Return "Name: Ohio " & _ "Capital: Columbus " & _ "Admitted: March 1, 1803 " & _ "Order: 17" Case "OK" Return "Name: Oklahoma " & _ "Capital: Oklahoma_City " & _ "Admitted: November 16, 1907 " & _ "Order: 46" Case "OR" Return "Name: Oregon " & _ "Capital: Salem " & _ "Admitted: February 14, 1859 " & _ "Order: 33" Case "PA" Return "Name: Pennsylvania " & _ "Capital: Harrisburg " & _ "Admitted: December 12, 1787 " & _ "Order: 2" Case "RI" Return "Name: Rhode_Island " & _ "Capital: Providence " & _ "Admitted: May 29, 1790 " & _ "Order: 13" Case "SC" Return "Name: South_Carolina " & _ "Capital: Columbia " & _ "Admitted: May 23, 1788 " & _ "Order: 8" Case "SD" Return "Name: South_Dakota " & _ "Capital: Pierre " & _ "Admitted: November 2, 1889 " & _ "Order: 40" Case "TN" Return "Name: Tennessee " & _ "Capital: Nashville " & _ "Admitted: June 1, 1796 " & _ "Order: 16" Case "TX" Return "Name: Texas " & _ "Capital: Austin " & _ "Admitted: December 28, 1846 " & _ "Order: 29" Case "UT" Return "Name: Utah " & _ "Capital: Salt_Lake_City " & _ "Admitted: January 4, 1896 " & _ "Order: 45" Case "VT" Return "Name: Vermont " & _ "Capital: Montpelier " & _ "Admitted: March 4, 1791 " & _ "Order: 14" Case "VA" Return "Name: Virginia " & _ "Capital: Richmond " & _ "Admitted: June 25, 1788 " & _ "Order: 10" Case "WA" Return "Name: Washington " & _ "Capital: Olympia " & _ "Admitted: November 11, 1889 " & _ "Order: 42" Case "WV" Return "Name: West_Virginia " & _ "Capital: Charleston " & _ "Admitted: June 20, 1863 " & _ "Order: 35" Case "WI" Return "Name: Wisconsin " & _ "Capital: Madison " & _ "Admitted: May 29, 1848 " & _ "Order: 30" Case "WY" Return "Name: Wyoming " & _ "Capital: Cheyenne " & _ "Admitted: July 10, 1890 " & _ "Order: 44" Case Else Return "The value you entered is not a valid " & _ "state abbreviation. Please enter a " & _ "valid two-digit abbreviation." End Select End Function

  1. Nous allons maintenant tester le service Web XML. Dans l'Explorateur de projets, sélectionnez StatesInformation.asmx, cliquez dessus avec le bouton droit et sélectionnez Définir comme page de démarrage. Appuyez sur F5. L'application et générée, et l'assembly .NET ainsi que les fichiers de support sont copiés dans le sous-dossier \bin du dossier de racine virtuelle sur le serveur Web. Microsoft Internet Explorer s'ouvre et affiche la description du nouveau service Web XML.

    Figure 1.
    Figure 1. Description du service Web XML affichée dans Internet Explorer

  2. Cliquez sur le lien hypertexte GetStateInfo pour tester la méthode. Sur la page, tapez le code d'un État à deux lettres (par ex. VA).

    Figure 2.
    Figure 2. Test de la méthode GetStateInfo du service Web XML

  3. Cliquez sur Invoke. Le résultat est illustré par la figure 3, ci-dessous.

    Figure 3.
    Figure 3. Résultat de la méthode GetStateInfo

  4. Félicitations ! Le service Web XML que vous avez créé fonctionne parfaitement. Il vous reste à créer une application cliente.

Si vous n'avez pas créé ce projet sur un serveur Web exécutant IIS, vous devez d'abord le copier de l'ordinateur utilisé pour le développement vers le serveur Web qui va héberger le service Web. Utilisez le dossier créé à l'étape 1 de la section Configuration d'Internet Information Server et enregistrez le projet sur le serveur en procédant comme suit :

  1. Dans le menu Projet, cliquez sur Copier un projet. Dans la boîte de dialogue Copier un projet, indiquez le dossier StatesInfoWS dans le répertoire racine du serveur Web et cliquez sur OK. Tous les fichiers nécessaires à la découverte et à l'utilisation du service Web XML seront copiés dans ce dossier.

  2. Pour enregistrer le projet, cliquez sur le bouton Démarrer, pointez sur Exécuter et tapez ce qui suit, en remplaçant <chemin> par le chemin absolu de l'emplacement où vous avez copié la DLL :

regsvr32 <chemin>\StatesInfoWS.dll

Création de l'application cliente

Nous allons à présent créer dans Access 2002 un formulaire qui nous permettra d'appeler le service Web XML et d'afficher les résultats.

Pour créer cette application dans Access, vous devez définir une référence à la bibliothèque de types Microsoft SOAP (mssoap1.dll) à partir de la boîte de dialogue Références (accessible via le menu Outils).

  1. Démarrez Access 2002.

  2. Dans la fenêtre Base de données, cliquez sur Formulaires sous Objets, puis sur Nouveau afin d'afficher la boîte de dialogue Nouveau formulaire.

  3. Dans la boîte de dialogue Nouveau formulaire, sélectionnez Mode Création et cliquez sur OK.

  4. Dans le menu Affichage, cliquez sur Propriétés pour ouvrir la feuille de propriétés du formulaire.

  5. Dans la feuille de propriétés, remplacez le texte de la propriété Légende par Gets Data from an XML Web Service.

  6. Sélectionnez le contrôle Zone de texte dans la Boîte à outils (accessible via le menu Affichage) et faites-le glisser sur le formulaire. Dans la feuille de propriétés, remplacez le texte actuel de la propriété Nom par txtAbbrevName.

  7. Cliquez sur l'étiquette correspondant au contrôle txtAbbrevName et remplacez le texte actuel de la propriété Légende par Enter the two-digit abbreviation for a state and click Get Information.

  8. Sélectionnez le contrôle Bouton de commande dans la Boîte à outils et faites-le glisser sur le formulaire. Cliquez sur Annuler dans l'écran Assistant Bouton de commande. Dans la feuille de propriétés, remplacez le nom du contrôle par cmdGetInfo.

  9. Remplacez le texte de la propriété Légende du contrôle cmdGetInfo par Get Information. Dans la feuille de propriétés, cliquez sur l'onglet Événement, puis sur l'événement Sur clic et ensuite sur le bouton Générateur, illustré par des points de suspension ().

  10. Dans l'Éditeur Visual Basic, vous devez d'abord ajouter une référence Web à une URL contenant une description de la méthode disponible dans le service Web XML. Dans le menu Outils, cliquez sur Web Service References.

  11. Dans la boîte de dialogue Web Service References, cliquez sur Web Service URL. Dans la boîte de dialogue URL, tapez l'URL du fichier de description du service Web XML et cliquez sur Search. Dans le cas du service Web XML de cette démonstration, l'URL serait la suivante :
    https://localhost/StatesInformationWS/StatesInformation.asmx?wsdl.

  12. Dans la boîte de dialogue Search Results, sélectionnez StatesInformation. Cliquez sur le signe plus (+) pour développer le nœud. Vous pouvez tester la méthode en sélectionnant GetStateInfo et en cliquant sur Test.

    Figure 4.
    Figure 4. Boîte de dialogue Web Service References

  13. Cliquez sur Add. La classe clsws_StatesInformation est ajoutée dans le dossier Modules de classe. Cette classe joue le rôle d'une classe proxy fournissant des interfaces au service Web XML et une représentation locale du service.

  14. Double-cliquez sur la classe clsws_StatesInformation. Faites défiler le code. À mesure que vous vous déplacez, vous remarquerez qu'un certain nombre de procédures événementielles, telles que Class_Initialize ou Class_Terminate, ont été créées automatiquement par l'outil Web Service References. Examinez également la fonction wsm_GetStateInfo : elle est utilisée pour appeler la méthode GetStateInfo de la classe StatesInformation du service Web XML que vous avez créé.

  15. Double-cliquez sur le module de formulaire. Ajoutez le code suivant à la procédure événementielle cmdGetInfo_Click :

' Purpose: The procedure is used to test the ' sample StatesInformation XML Web ' service by calling the wsm_getStateInfo ' function of the clsws_StatesInformation ' proxy class. This method then calls the ' XML Web service sending a two-digit state ' abbreviation and displays the return ' information. ' ' Returns: The state full name, the state capital, ' the date the state was admitted to the ' the union, and the order it was admitted. ' Dim clsStatesWS As clsws_StatesInformation Dim strUserInfo As String Dim strReturn As String Dim strName As String Dim strCapital As String Dim strDate As String Dim strOrder As String Dim intStart As Integer Dim intEnd As Integer Dim intLength As Integer

On Error GoTo cmdGetInfo_Click_Err

' Create a reference to the clsws_StatesInformation class. Set clsStatesWS = New clsws_StatesInformation

Me!txtAbbrevName.SetFocus strUserInfo = Me!txtAbbrevName.Text

' Call the wsm_GetStateInfo method. strReturn = Trim(clsStatesWS.wsm_GetStateInfo(strUserInfo))

' Check to see if the state information was returned. If Left(strReturn, 4) <> "Name" Then MsgBox strReturn, , "Not a valid Entry" GoTo cmdGetInfo_Click_End End If

' Parse the return string.

' Get the Name field. ' Find the first :. intStart = InStr(1, strReturn, ":") + 2 ' Find the first blank after the name. intEnd = (InStr(intStart, strReturn, " ")) ' The number of characters to grab. intLength = intEnd - intStart strName = Mid(strReturn, intStart, intLength)

' Check to see if there is an underscore between ' the words and remove it before display. If InStr(1, strName, "") <> 0 Then strName = Replace(strName, "", " ") End If

Me!txtName.SetFocus Me!txtName.Text = strName

' Get the Capital field. ' Find the second : by starting at the end of ' the name field. intStart = InStr(intEnd, strReturn, ":") + 2 ' Find the blank after the date. intEnd = (InStr(intStart, strReturn, " ")) ' The number of characters to grab. intLength = intEnd - intStart strCapital = Mid(strReturn, intStart, intLength)

' Check to see if there is an underscore between ' the words and remove it before display. If InStr(1, strCapital, "") <> 0 Then strCapital = Replace(strCapital, "", " ") End If

Me!txtCapital.SetFocus Me!txtCapital.Text = strCapital

' Get the date field. intStart = InStr(intEnd, strReturn, ":") + 2 ' Find the comma after the day and add 6 for ' the year. intEnd = (InStr(intStart, strReturn, ",") + 6) ' The number of characters to grab. intLength = intEnd - intStart strDate = Mid(strReturn, intStart, intLength)

Me!txtDate.SetFocus Me!txtDate.Text = strDate

' And finally, get the order that the state was ' admitted to the union. strOrder = Trim(Right(strReturn, 2))

Me!txtOrder.SetFocus Me!txtOrder.Text = strOrder

Me!txtAbbrevName.SetFocus

cmdGetInfo_Click_End: Exit Sub cmdGetInfo_Click_Err: MsgBox Err.Number & ":" & Err.Description GoTo cmdGetInfo_Click_End

  1. Fermez l'Éditeur Visual Basic.

  2. Ajoutez quatre contrôles Zone de texte au formulaire en les faisant glisser à partir de la Boîte à outils et en les plaçant sous le bouton Get Information.

  3. Double-cliquez sur le premier contrôle Zone de texte pour afficher sa feuille de propriétés. Remplacez le nom du contrôle par txtName.

  4. Cliquez sur l'étiquette du contrôle et remplacez le texte de la propriété Légende par Name:.

  5. Répétez les étapes 18 et 19 pour les trois autres contrôles, en modifiant leurs propriétés comme suit :

    Propriété Nom des contrôles Zone de texte Propriété Légende des étiquettes correspondantes
    TxtCapital Capital:
    TxtDate Date Admitted:
    txtOrder Order of Admission:
  6. Faites glisser un contrôle Bouton de commande sur le formulaire et positionnez-le sous le contrôle txtOrder. Dans l'écran Assistant Bouton de commande, sélectionnez Opérations sur formulaire dans la liste Catégories, puis sélectionnez Fermer un formulaire dans la liste Actions. Cliquez sur Suivant.

  7. Dans l'écran suivant, sélectionnez Texte et remplacez le texte par Close. Cliquez sur Suivant.

  8. Remplacez le nom du contrôle par cmdClose et cliquez sur Terminer.

Test du service Web XML

À présent, ouvrez le formulaire Access pour tester le service Web XML.

  1. Fermez la feuille de propriétés si elle est toujours affichée.

  2. Dans le menu Affichage, cliquez sur Mode Formulaire.

  3. Saisissez le code d'un État américain à deux lettres (VA, par exemple) dans la zone de texte et cliquez sur Get Information.

Les résultats renvoyés par le service Web XML s'affichent dans les différentes zones de texte du formulaire. Voyez l'illustration ci-dessous :

Figure 5.
Figure 5. Formulaire Access affichant les résultats du service Web XML

Conclusion

Dans cet article, nous vous avons montré comment créer, déployer et utiliser un service Web XML qui accepte le code d'un État américain à deux lettres et renvoie le nom complet de l'État en question, sa capitale, ainsi que sa date et son ordre d'admission dans l'union. Vous avez d'abord créé une racine virtuelle sur un serveur Web. Ensuite, vous avez créé un projet Service Web ASP.NET dans Visual Studio .NET et vous y avez inséré le code nécessaire pour ajouter des fonctionnalités au service Web XML. Puis, vous avez créé une application cliente sous la forme d'un formulaire Access 2002, lequel vous a permis de tester le service Web XML. La procédure décrite dans cet article est, comme vous avez pu le constater, d'une grande simplicité. Visual Studio .NET et Office XP se combinent à merveille pour vous permettre de créer, déployer et tester vos propres Services Web.

Dernière mise à jour le jeudi 22 août 2002

Pour en savoir plus