Procédure pas à pas : accès à un service Web à l'aide des fournisseurs de type (F#)
Cette procédure pas à pas vous indique comment utiliser le fournisseur de type WSDL (Web Services Description Language) qui est disponible dans F# 3.0 pour accéder à un service WSDL. Dans d'autres langages .NET, vous générez du code pour accéder au service Web en appelant svcutil.exe, ou en ajoutant une référence Web dans, par exemple, un projet C# pour que Visual Studio appelle svcutil.exe pour vous. En F#, vous avez la possibilité supplémentaire d'utiliser le fournisseur de type WSDL, pour que dès que vous écrivez du code qui crée le type WsdlService, les types soient générés et deviennent disponibles. Ce processus repose sur le fait que le service est disponible lorsque vous écrivez du code.
Cette procédure pas à pas décrit les tâches suivantes. Vous devez les exécuter dans cet ordre pour que la procédure pas à pas réussisse :
Création du projet
Configuration du fournisseur de type
Appeler le service Web et traiter les résultats
Création du projet
Dans l'étape, vous créez un projet et ajoutez les références appropriées pour utiliser un fournisseur de type WSDL.
Pour créer et paramétrer un projet F#
Ouvrez un nouveau projet d'application console F#.
Dans l'Explorateur de solutions, ouvrez le menu contextuel du nœud Référence du projet, puis choisissez Ajouter une référence.
Dans la zone Assemblys, choisissez framework, puis, dans la liste d'assemblys disponibles, choisissez System.Runtime.Serialization et System.ServiceModel.
Dans la zone Assemblys, choisissez Extensions.
Dans la liste d'assemblys disponibles, choisissez FSharp.Data.TypeProviders, puis choisissez le bouton OK pour ajouter des références aux assemblys suivants.
Configuration du fournisseur de type
Dans cette étape, vous utilisez le fournisseur de type WSDL pour générer des types pour le service Web TerraServer.
Pour configurer le fournisseur de types et générer des types
Ajoutez la ligne de code suivante pour ouvrir l'espace de noms du fournisseur de type.
open System open System.ServiceModel open Microsoft.FSharp.Linq open Microsoft.FSharp.Data.TypeProviders
Ajoutez la ligne de code suivante pour appeler le fournisseur de type avec un service Web. Dans cet exemple, utilisez le service Web TerraServer.
type TerraService = WsdlService<"http://msrmaps.com/TerraService2.asmx?WSDL">
Un tilde rouge apparaît sous cette ligne de code si l'URI de service est mal orthographié ou si le service lui-même n'est pas lancé ou ne s'exécute pas. Si vous désignez le code, un message d'erreur décrit le problème. Vous pouvez rechercher les mêmes informations dans la fenêtre Liste d'erreurs ou dans fenêtre Sortie après la génération.
Il existe deux façons de spécifier des paramètres de configuration d'une connexion WSDL, en utilisant le fichier app.config du projet, ou en utilisant les paramètres statiques dans le type déclaration de fournisseur. Vous pouvez utiliser svcutil.exe pour générer les éléments appropriés du fichier de configuration. Pour plus d'informations sur l'utilisation de svcutil.exe pour générer des données de configuration pour un service Web, consultez Outil Service Model Metadata Tool (Svcutil.exe). Pour une description complète des paramètres statiques pour le fournisseur de type WSDL, consultez WsdlService, fournisseur de type (F#).
Appeler le service Web et traiter les résultats
Chaque service Web possède son propre ensemble de types utilisés comme paramètres pour les appels de méthode. Dans cette étape, vous préparez ces paramètres, appelez une méthode Web et gérez les informations qu'elle retourne.
Pour appeler le service Web et traiter les résultats
Le service Web peut expirer ou cesser de fonctionner, vous devez inclure l'appel au service Web dans un bloc de gestion des exceptions. Entrez le code suivant pour essayer d'obtenir des données du service Web.
try let terraClient = TerraService.GetTerraServiceSoap () let myPlace = new TerraService.ServiceTypes.msrmaps.com.Place(City = "Redmond", State = "Washington", Country = "United States") let myLocation = terraClient.ConvertPlaceToLonLatPt(myPlace) printfn "Redmond Latitude: %f Longitude: %f" (myLocation.Lat) (myLocation.Lon) with | :? ServerTooBusyException as exn -> let innerMessage = match (exn.InnerException) with | null -> "" | innerExn -> innerExn.Message printfn "An exception occurred:\n %s\n %s" exn.Message innerMessage | exn -> printfn "An exception occurred: %s" exn.Message
Notez que vous créez des types de données qui sont nécessaires pour le service Web, tel que Place et Location, en tant que types imbriqués sous le type TerraServicede WsdlService.
Voir aussi
Référence
WsdlService, fournisseur de type (F#)