Návod: Přístup k webové službě s použitím zprostředkovatelů typů (F#)
Tento názorný postup ukazuje, jak pomocí poskytovatele typu jazyka WSDL (Web Services Description Language), který je k dispozici v jazyce F# 3.0, získat přístup ke službě WSDL.V jiných jazycích technologie .NET je generován kód pro přistoupení k webové službě voláním svcutil.exe nebo přidáním webového odkazu, například aby systém Visual Studio v projektu jazyka C# zavolal svcutil.exe.V jazyce F# existují další možnosti použití poskytovatele typu WSDL, jakmile tedy napíšete kód, který vytvoří typ WsdlService, typy jsou vygenerovány a jsou k dispozici.Tento proces se opírá o službu, která je při psaní kódu k dispozici.
Tento návod ilustruje následující úkoly.Aby byl postup úspěšný, je nutné je provést v uvedeném pořadí:
Vytváření projektu
Konfigurace poskytovatele typů
Volání webové služby a zpracování výsledků
Vytváření projektu
Tímto krokem je vytvořen projekt a jsou přidány příslušné odkazy na použití poskytovatele typu WSDL.
Vytvoření a nastavení projektu jazyka F#
Otevřete nový projekt konzolové aplikace jazyka F#.
V Průzkumníku řešení otevřete místní nabídku pro uzel Odkazy projektu a pak zvolte Přidat odkaz.
V oblasti Sestavení zvolte Architektura a potom vyberte v seznamu dostupných sestavení System.Runtime.Serialization a System.ServiceModel.
V oblasti Sestavení zvolte Přípony.
V seznamu dostupných sestavení zvolte FSharp.Data.TypeProviders a pak pro přidání odkazů na tato sestavení zvolte tlačítko OK.
Konfigurace poskytovatele typů
V tomto kroku je poskytovatel typu WSDL použit pro generování typů pro webové služby TerraServer.
Konfigurace poskytovatele typů a generování typů
Pro otevření oboru názvů poskytovatele typu přidejte následující řádek kódu.
open System open System.ServiceModel open Microsoft.FSharp.Linq open Microsoft.FSharp.Data.TypeProviders
Následující řádek kódu přidejte pro vyvolání poskytovatele typu s webovou službou.V tomto příkladu použijte webovou službu TerraServer.
type TerraService = WsdlService<"http://msrmaps.com/TerraService2.asmx?WSDL">
Pokud je služba URI napsána chybně, pokud došlo k výpadku samotné služby nebo nefunguje, zobrazí se pod tímto řádkem kódu červená vlnovka.Pokud přejdete na kód, chybová zpráva problém popíše.Po sestavení lze stejné informace nalézt v okně Seznam chyb nebo ve Výstupním okně.
Existují dva způsoby určení nastavení konfigurace pro připojení WSDL, pomocí souboru app.config pro projekt nebo pomocí parametrů statického typu v deklaraci poskytovatele typu.Pomocí Svcutil.exe lze generovat prvky příslušného konfiguračního souboru.Další informace o použití svcutil.exe k vytvoření informací o konfiguraci pro webovou službu naleznete v části Nástroj ServiceModel Metadata Utility (Svcutil.exe). Úplný popis parametrů statického typu pro poskytovatele typu WSDL naleznete v části WsdlService – poskytovatel typů (F#).
Volání webové služby a zpracování výsledků
Každá webová služba má vlastní sadu typů, které slouží jako parametry pro její volání metody.V tomto kroku budou tyto parametry připraveny, bude volána webová metoda a zpracovány informace, které vrátí.
Pro volání webové služby a zpracování výsledků
Webová služba může mít časový limit nebo může přestat fungovat, proto by mělo být volání webové služby zahrnuto do bloku zpracování výjimek.Napište následující kód a pokuste se získat data z webové služby.
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
Všimněte si, že jsou vytvořeny datové typy, které jsou potřebné pro webové služby, například Place a Location jako vnořené typy pod typem TerraService WsdlService.
Viz také
Referenční dokumentace
WsdlService – poskytovatel typů (F#)