Condividi tramite


Procedura dettagliata: accesso a un servizio Web tramite provider di tipi (F#)

In questa procedura dettagliata viene illustrato come utilizzare il provider di tipo (WSDL) di Web Services Description Language) disponibili in F# 3,0 per accedere a un servizio WSDL.In altri linguaggi.NET, generare codice per accedere al servizio web chiamando svcutil.exe, o l'opzione Aggiungi riferimento Web in, ad esempio, un progetto C# ottenere Visual Studio a chiamare svcutil.exe automaticamente.In F#, è possibile aggiuntiva di utilizzando il provider del tipo di file, per precedenza durante la scrittura del codice che crea il tipo di WsdlService, i tipi vengono generati e diventano disponibili.Questo processo si basa sul servizio disponibile quando si scrive codice.

In questa procedura dettagliata vengono illustrate le seguenti attività.È necessario completarle in quest'ordine per la procedura dettagliata riesca:

  • Creating the project

  • Configuring the type provider

  • Calling the web service, and processing the results

Creare il progetto

Nel passaggio, creare un progetto e aggiungere i riferimenti appropriati per utilizzare un provider del tipo di file.

Per creare e configurare un progetto F#

  1. Aprire un nuovo progetto di applicazione console F#.

  2. In Esplora soluzioni, aprire il menu di scelta rapida del nodo riferimento del progetto e quindi scegliere Aggiungi riferimento.

  3. Nell'area Assembly, scegliere Frameworkquindi, nell'elenco di assembly disponibili, scegliere System.Runtime.Serialization e System.ServiceModel.

  4. Nell'area Assembly, scegliere estensioni.

  5. Nell'elenco di assembly disponibili, scegliere FSharp.Data.TypeProvidersquindi scegliere il pulsante OK per aggiungere riferimenti a questi assembly.

Configurazione del provider del tipo

In questo passaggio, si utilizza il provider del tipo di file per generare i tipi per il servizio web di TerraServer.

Per configurare il provider del tipo e generare i tipi

  1. Aggiungere la seguente riga di codice per aprire lo spazio dei nomi del provider del tipo.

    open System
    open System.ServiceModel
    open Microsoft.FSharp.Linq
    open Microsoft.FSharp.Data.TypeProviders
    
  2. Aggiungere la seguente riga di codice per richiamare il provider di tipo a un servizio web.In questo esempio, utilizzare il servizio web di TerraServer.

    type TerraService = WsdlService<"http://msrmaps.com/TerraService2.asmx?WSDL">
    

    Un tagger rosso verrà visualizzato nella seguente riga di codice se l'uri del servizio non sia stato digitato correttamente o se il servizio è premuto o non in esecuzione.Se si punta il codice, un messaggio di errore descrive il problema.È possibile trovare le stesse informazioni nella finestra Elenco errori o in Finestra di output dopo la compilazione.

    Esistono due modi per specificare le impostazioni di configurazione di una connessione WSDL, utilizzando il file app.config del progetto, o utilizzando i parametri statici nella dichiarazione del provider del tipo.È possibile utilizzare svcutil.exe per generare gli elementi appropriati del file di configurazione.Per ulteriori informazioni sull'utilizzo svcutil.exe per generare informazioni di configurazione per un servizio web, vedere ServiceModel Metadata Utility Tool (Svcutil.exe). Per una descrizione completa dei parametri statici per il provider del tipo di file, vedere Provider di tipo WsdlService (F#).

Chiamare il servizio web ed elaborare i risultati

Ogni servizio web presenta un insieme di tipi utilizzati come parametri per le chiamate al metodo.In questo passaggio, preparare questi parametri, chiama un metodo Web e si elaborano le informazioni che restituisce.

Per chiamare il servizio web ed elaborare i risultati

  • La forza di servizio web è scaduto o interruzione in esecuzione, in modo da includere la chiamata a un servizio web in un blocco di gestione delle eccezioni.Scrivere il codice seguente per tentare di ottenere i dati dal servizio 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
    

    Notare che si creano tipi di dati necessari per il servizio web, come Place e Location, come i tipi annidati sotto il WsdlService digitare TerraService.

Vedere anche

Riferimenti

Provider di tipo WsdlService (F#)

Altre risorse

Provider di tipi