Názorný postup: Přístup K webové služby pomocí zprostředkovatelů typu (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 použitím možnosti Přidat webový odkaz, 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 ukazuje následující úkoly.Aby byl postup úspěšný, je nutné je provést v uvedeném pořadí:

  • Vytvoření projektu

  • Konfigurace poskytovatele typů

  • Volání webové služby a zpracování výsledků

Vytvoř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#

  1. Otevřete nový projekt Konzolové aplikace jazyka F#.

  2. V Průzkumníku řešení otevřete místní nabídku pro uzel Odkazy projektu a pak zvolte Přidat odkaz.

  3. V oblasti Sestavení zvolte Architektura a potom vyberte v seznamu dostupných sestavení System.Runtime.Serialization a System.ServiceModel.

  4. V oblasti Sestavení zvolte Přípony.

  5. 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ů

  1. 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
    
  2. 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 ServiceModel Metadata Utility Tool (Svcutil.exe). Úplný popis parametrů statického typu pro poskytovatele typu WSDL naleznete v části Zprostředkovatel WsdlService typu (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

Zprostředkovatel WsdlService typu (F#)

Další zdroje

Typ zprostředkovatele