Partager via


Procédure pas à pas : connexion à des données dans un service Web (Windows Forms)

Cette procédure pas à pas indique comment connecter votre application à un service Web à l'aide de l'Configuration de source de données (Assistant). Vous vous connecterez au service Web Live Search et exécuterez des requêtes de recherche à partir de votre application. Les données retournées par le service (les résultats de la recherche) seront affichées sur un Windows Form.

Cette procédure pas à pas illustre les tâches suivantes :

  • Création d'un nouveau projet Application Windows.

  • Ajout d'une référence de service à une application (connexion au service Live Search).

  • Ajout de contrôles pour exécuter des requêtes de recherche (appel de méthodes exposées par le service).

  • Écriture de code pour accéder au service et retourner des données.

  • Liaison des données retournées par le service au BindingSource.

  • Affichage des données retournées par le service dans une grille.

Obtention d'un AppID

Live Search propose un AppID gratuit qui identifie de façon unique votre application auprès de son service. L'AppID est obligatoire pour accéder à celui-ci.

Pour obtenir un AppID

  • Naviguez jusqu'à https://www.bing.com/developer/ et obtenez un AppID gratuit

    Notes

    La validation de l'AppID auprès du service peut prendre un certain temps (de 30 à 60 minutes). Si vous obtenez une erreur générique de type Erreur de client durant ce temps, lors de l'exécution de l'application, il est probable que l'AppID soit en cours d'activation sur les serveurs Live Search.

Création du projet

Pour créer le nouveau projet

  1. Dans le menu Fichier, créez un nouveau projet.

  2. Sélectionnez Application Windows Forms et nommez-le WebServiceWalkthrough.

  3. Cliquez sur OK.

    Le projet est créé et ajouté à l'Explorateur de solutions.

Connexion au service

Connectez-vous au service Web en exécutant l'Assistant Configuration de source de données.

  1. Dans le menu Données, cliquez sur Afficher les sources de données.

  2. Dans la fenêtre Sources de données, sélectionnez Ajouter une nouvelle source de données.

  3. Sélectionnez Service dans la page Choisir un type de source de données, puis cliquez sur Suivant.

  4. Tapez https://soap.search.msn.com/webservices.asmx?wsdl dans la zone URL de la boîte de dialogue Ajouter une référence de service.

  5. Cliquez sur OK.

  6. Une fois le service Web trouvé, modifiez l'espace de noms en ServiceLiveSearch.

  7. Cliquez sur OK, puis sur Terminer pour ajouter la référence du service à votre projet.

    La référence du service est ajoutée au projet et la fenêtre Sources de données est remplie en fonction des éléments retournés par le service.

Notes

Dans la mesure où des services Web différents exposent des fonctionnalités différentes, les étapes suivantes de cette procédure pas à pas sont spécifiques à l'utilisation du service Web Live Search. Le processus habituel d'utilisation des données d'un service consiste à créer une instance du service, puis à appeler les méthodes exposées par ce service. Après avoir fait glisser les éléments de la fenêtre Sources de données, votre formulaire doit contenir un composant BindingSource ; affectez à la propriété DataSource les données retournées par le service.

Création d'un DataGridView pour afficher les données retournées par le service

Créez une grille de données liée aux données en faisant glisser les éléments de la fenêtre Sources de données sur le formulaire. Après avoir ajouté la grille, configurez les colonnes afin d'afficher uniquement les colonnes à présenter. Affectez ensuite un lien à la colonne d'URL afin que les utilisateurs puissent cliquer sur l'URL pour naviguer jusqu'aux sites Web retournés par la requête de recherche.

Pour créer le contrôle DataGridView lié aux données

  1. Développez le nœud SearchResponse dans la fenêtre Source de données.

  2. Développez le nœud Responses.

  3. Faites glisser le nœud Results sur le formulaire.

    Des contrôles DataGridView, BindingSource et BindingNavigator sont ajoutés au formulaire.

  4. Sélectionnez le resultsDataGridView ajouté au formulaire.

  5. Dans la fenêtre Propriétés, sélectionnez la propriété Columns, puis cliquez sur les points de suspension (…) pour ouvrir la Modifier les colonnes, boîte de dialogue (mode Design).

  6. Sélectionnez la colonne URL et affectez à :

    1. la propriété ColumnType la valeur DataGridViewLinkColumn ;

    2. la propriété AutoSizeMode la valeur AllCells.

  7. Supprimez toutes les colonnes hormis Titre, Description et URL.

  8. Cliquez sur OK.

Ajout de contrôles pour la saisie des critères de recherche et l'exécution de la requête de recherche

Ajoutez des contrôles à la barre d'outils existante pour l'exécution des requêtes de recherche.

Pour ajouter une zone de texte et un bouton au formulaire

  1. Cliquez avec le bouton droit sur l'icône de disque grisée figurant sur la barre d'outils du formulaire et sélectionnez Insérer, puis TextBox.

  2. Dans la fenêtre Propriétés, affectez à la propriété Name la valeur searchCriteriaTextBox.

  3. Affectez à la propriété Text la valeur Visual Studio.

  4. Ajoutez un bouton à la barre d'outils et nommez-le BoutonRechercher.

  5. Dans la fenêtre Propriétés, affectez à la propriété DisplayStyle la valeur Texte.

  6. Affectez à la propriété Text la valeur Rechercher.

Création d'un gestionnaire d'événements pour ouvrir le site Web sur lequel l'utilisateur a cliqué dans la grille

Ajoute un gestionnaire d'événements pour l'événement CellContentClick.

Pour créer le gestionnaire d'événements CellContentClick

  1. Sélectionnez le resultsDataGridView sur le formulaire, puis cliquez sur le bouton Événements dans la fenêtre Propriétés. Le bouton Événements comporte une icône représentant un éclair.

  2. Double-cliquez sur l'événement CellContentClick pour créer et naviguer jusqu'au stub de gestionnaire.

  3. Ajoutez du code permettant de déterminer sur quelle colonne l'utilisateur clique et de naviguer jusqu'à la page Web s'il s'agit de la colonne URL :

    Private Sub ResultsDataGridView_CellContentClick( _
        ByVal sender As System.Object, _
        ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
        Handles ResultsDataGridView.CellContentClick
    
        ' When the content in a cell is clicked check to see if it is the Url column.
        ' If it is, pass the url to the Process.Start method to open the web page.
        If ResultsDataGridView.Columns(e.ColumnIndex).DataPropertyName = "Url" Then
            System.Diagnostics.Process.Start(ResultsDataGridView.SelectedCells(0).Value)
        End If
    End Sub
    
    private void resultsDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        // When the content in a cell is clicked check to see if it is the Url column.
        // If it is, pass the url to the Process.Start method to open the web page.
        if (resultsDataGridView.Columns[e.ColumnIndex].DataPropertyName == "Url")
        {
            System.Diagnostics.Process.Start(resultsDataGridView.SelectedCells[0].Value.ToString());
        }
    }
    

Ajout de code pour accéder au service Live Search et exécuter une requête de recherche

Accédez au service en instanciant une instance du service dans votre application et en appelant les méthodes exposées par le service.

Pour accéder et utiliser le service

  1. Ouvrez Form1 dans l'éditeur de code.

  2. Ajoutez la méthode suivante à Form1 :

    Private Sub RunSearchRequest()
    
        ' Create an instance of the service.
        Dim searchService As New LiveSearchService.MSNSearchPortTypeClient
    
        ' Instantiate a new SearchRequest.
        Dim searchRequest As New LiveSearchService.SearchRequest
    
        ' Create a new SourceRequest.
        Dim sourceRequest(1) As LiveSearchService.SourceRequest
        sourceRequest(0) = New LiveSearchService.SourceRequest
    
        ' To search the web, set the SourceType to Web.
        sourceRequest(0).Source = LiveSearchService.SourceType.Web
    
        ' Set the columns you want the query to return.
        sourceRequest(0).ResultFields = _
            LiveSearchService.ResultFieldMask.Description And _
            LiveSearchService.ResultFieldMask.Url And _
            LiveSearchService.ResultFieldMask.Title
    
        ' Search for the text in the textbox.
        searchRequest.Query = searchCriteriaTextBox.Text
    
        ' Set the SearchRequest to the SourceRequest array.
        searchRequest.Requests = sourceRequest
    
    
        ' Replace with a valid AppID. Obtain a free AppID at:
        ' http://search.live.com/developer 
        searchRequest.AppID = "AppID"
        searchRequest.CultureInfo = "en-US"
    
        ' Create a SearchResponse, then call the Search method
        ' and assign the return value to the response object.
        Dim searchResponse As LiveSearchService.SearchResponse = _
            searchService.Search(searchRequest)
    
        ' Bind the results to the form's BindingSource.
        ResultsBindingSource.DataSource = searchResponse.Responses(0).Results
    End Sub
    
    private void RunSearchRequest()
    {
        // Create an instance of the service.
        LiveSearchService.MSNSearchPortTypeClient searchService =
            new LiveSearchService.MSNSearchPortTypeClient();
    
        // Instantiate a new search request.
        LiveSearchService.SearchRequest searchRequest = new LiveSearchService.SearchRequest();
    
        // Create a new SourceRequest.
        LiveSearchService.SourceRequest[] sourceRequest = new LiveSearchService.SourceRequest[1];
        sourceRequest[0] = new LiveSearchService.SourceRequest();
    
        // Set the number of results to return.
        sourceRequest[0].Count = 7;
    
        // To search the web, set the SourceType to Web.
        sourceRequest[0].Source = LiveSearchService.SourceType.Web;
    
        // Set the columns to be returned from the search query.
        sourceRequest[0].ResultFields = LiveSearchService.ResultFieldMask.Description |
            LiveSearchService.ResultFieldMask.Url |
            LiveSearchService.ResultFieldMask.Title;
    
        // Set the search query to the value in the text box.
        searchRequest.Query = searchCriteriaTextBox.Text;
    
        // Set the search request to the array of source requests.
        searchRequest.Requests = sourceRequest;
    
        // Replace with a valid AppID. Obtain a free AppID at:
        // http://search.live.com/developer 
        searchRequest.AppID = "AppID";
        searchRequest.CultureInfo = "en-US";
    
        // Create a SearchResponse, then call the search method
        // and assign the return value to the response object.
        LiveSearchService.SearchResponse searchResponse = searchService.Search(searchRequest);
    
        // Bind the results from the search query to the form's BindingSource.
        resultsBindingSource.DataSource = searchResponse.Responses[0].Results;
    }
    

Notes

Veillez à remplacer searchRequest.AppID = "AppID" par la valeur AppID obtenue du service Live Search.

Création d'un gestionnaire d'événements pour exécuter une recherche lorsque l'utilisateur clique sur le bouton Rechercher

Créez un gestionnaire d'événements pour l'événement searchButton.Click et appelez la méthode RunSearchRequest.

Pour implémenter la recherche lorsque l'utilisateur clique sur le bouton

  1. Ouvrez Form1 en mode Design.

  2. Double-cliquez sur le bouton Rechercher.

  3. Ajoutez la ligne de code suivante dans le gestionnaire généré :

    Private Sub searchButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles searchButton.Click
        RunSearchRequest()
    End Sub
    
    private void searchButton_Click(object sender, EventArgs e)
    {
        RunSearchRequest();
    }
    

Exécution de l'application

Exécutez l'application et exécutez une recherche.

Pour exécuter l'application et exécuter une recherche

  1. Exécutez l'application (appuyez sur F5).

  2. Cliquez sur Rechercher pour rechercher Visual Studio sur le Web, le texte par défaut figurant dans le contrôle searchCriteriaTextBox.

    La grille affiche les dix premiers résultats de la recherche.

  3. Cliquez sur l'une des URL pour naviguer jusqu'au site Web correspondant.

  4. Tapez Météo Redmond WA dans la zone de texte, puis cliquez sur Rechercher.

    La grille est mise à jour avec les nouveaux résultats de la recherche.

Étapes suivantes

L'accès au service Live Search a pour seul objectif de constituer un point de départ pour comprendre comment afficher les données retournées par un service qui utilise les fonctionnalités de liaison de données dans les applications Windows Forms. Après vous être connecté à un service différent et avoir fait glisser des éléments de la fenêtre Sources de données, votre formulaire doit contenir un composant BindingSource ; affectez à la propriété DataSource les données retournées par le service. Pour plus d'informations, consultez Vue d'ensemble du composant BindingSource.

Notes

Les éléments qui s'affichent dans la fenêtre Sources de données dépendent des informations retournées par le service Web. Il se peut que certains services Web ne fournissent pas suffisamment d'informations pour permettre à l'Assistant Configuration de source de données de créer des objets pouvant être liés. Par exemple, si le service Web retourne un objet qui ne fournit pas de schéma détectable, aucun élément ne s'affichera dans la fenêtre Sources de données à la fin de l'Assistant.

Pour ajouter des fonctionnalités à votre application

Voir aussi

Concepts

Liaison de contrôles à des données dans Visual Studio

Autres ressources

Modification des données dans votre application

Validation des données

Enregistrement des données

Procédures pas à pas relatives aux données