Tutorial: Conectar a los datos en un servicio Web (Windows Forms)

En este tutorial se muestra cómo conectar su aplicación a un servicio Web utilizando Asistente para la configuración de orígenes de datos. Conectará con el servicio Web Live Search y ejecutará consultas de búsqueda desde la aplicación. Los datos devueltos por el servicio (los resultados de la búsqueda) se mostrarán en Windows Forms.

Las tareas ilustradas en este tutorial incluyen:

  • Crear un proyecto nuevo de Aplicación Windows.

  • Agregar una referencia de servicio a una aplicación (conectar con el servicio Live Search).

  • Agregar controles para ejecutar consultas de búsqueda (métodos de llamada expuestos por el servicio).

  • Escribir código para tener acceso a los datos devueltos y de servicio.

  • Enlazar los datos devueltos del servicio a BindingSource.

  • Mostrar los datos devueltos del servicio en una cuadrícula.

Obtener un AppID

Un AppID de Live Search está disponible de forma gratuita e identifica de manera única la aplicación en el servicio Live Search. El AppID es necesario para tener acceso al servicio.

Para obtener un AppID

  • Navegue hasta http://search.live.com/developer y obtenga un AppID gratuito

    Nota

    Podría tardar un tiempo (30-60 minutos) la validación del AppID con el servicio. Si se produce un 'Error de cliente' genérico en este tiempo al ejecutar la aplicación, es probable que el AppID todavía esté en proceso de habilitarse en los servidores de Live Search.

Crear el proyecto

Para crear el nuevo proyecto

  1. En el menú Archivo, cree un nuevo proyecto.

  2. Seleccione Aplicación de Windows Forms y asígnele el nombre WebServiceWalkthrough.

  3. Haga clic en Aceptar.

    El proyecto se crea y se agrega al Explorador de soluciones.

Conectarse al servicio

Conecte con el servicio Web ejecutando el Asistente para la configuración de orígenes de datos.

  1. En el menú Datos, haga clic en Mostrar orígenes de datos.

  2. En la ventana Orígenes de datos, seleccione Agregar nuevo origen de datos.

  3. Seleccione Servicio en la página Elegir un tipo de origen de datos y haga clic en Siguiente.

  4. Escriba http://soap.search.msn.com/webservices.asmx?wsdl en el cuadro Dirección URL del cuadro de diálogo Agregar referencia de servicio.

  5. Haga clic en Ir.

  6. Una vez encontrado el servicio Web, cambie el espacio de nombres por LiveSearchService.

  7. Haga clic en Aceptar y, a continuación, en Finalizar para agregar la referencia al servicio a su proyecto.

    La referencia al servicio se agrega al proyecto y la ventana Orígenes de datos se rellena dependiendo de los elementos devueltos por el servicio.

Nota

Como diferentes servicios Web exponen funcionalidad diferente, los siguientes pasos de este tutorial son específicos del uso del servicio Web Live Search. El proceso típico para utilizar los datos de un servicio es crear una instancia del servicio y, a continuación, llamar a los métodos expuestos por el servicio. Después de arrastrar los elementos de la ventana Orígenes de datos, el formulario debería contener un componente BindingSource; establezca la propiedad DataSource en los datos devueltos por el servicio.

Crear un DataGridViews para mostrar los datos devueltos por el servicio

Cree una cuadrícula de datos enlazada a datos arrastrando elementos de la ventana Orígenes de datos al formulario. Después de agregar la cuadrícula, configure las columnas para mostrar solo las que deseamos presentar. A continuación, establezca la columna URL en un vínculo de modo que los usuarios puedan hacer clic la dirección url y navegar a los sitios web devueltos por la consulta de búsqueda.

Para crear DataGridView enlazados a datos

  1. Expanda el nodo SearchResponse en la ventana Orígenes de datos.

  2. Expanda el nodo Responses.

  3. Arrastre el nodo Results al formulario.

    Un control DataGridView, BindingSource y BindingNavigator se agregan al formulario.

  4. Seleccione resultsDataGridView que se agregó al formulario.

  5. En la ventana Propiedades, seleccione la propiedad Columnas y, a continuación, haga clic en el botón de puntos suspensivos para abrir Editar columnas (Cuadro de diálogo, Vista Diseño).

  6. Seleccione la columna URL y establezca:

    1. la propiedad ColumnType en DataGridViewLinkColumn.

    2. la propiedad AutoSizeMode en AllCells.

  7. Quite todas las columnas excepto Title, Description y URL.

  8. Haga clic en Aceptar.

Agregar controles para escribir los criterios de búsqueda y ejecutar la consulta de búsqueda

Agregue los controles a la tira de herramientas existente para ejecutar las consultas de búsqueda.

Para agregar un botón y un cuadro de texto al formulario

  1. Haga clic con el botón secundario en el icono de disco deshabilitado en la tira de la herramienta del formulario y seleccione Insertar seguido por TextBox.

  2. En la ventana Propiedades, establezca la propiedad Nombre en searchCriteriaTextBox.

  3. Establezca la propiedad Text en Visual Studio.

  4. Agregue un botón a la tira de herramientas y denomínelo searchButton.

  5. En la ventana Propiedades, establezca la propiedad DisplayStyle en Text.

  6. Cambie la propiedad Text a Search.

Crear un controlador de eventos para abrir el sitio web en el que se hizo clic en la cuadrícula

Agregue un controlador de eventos para el evento CellContentClick.

Para crear el controlador de eventos CellContentClick

  1. Seleccione el control resultsDataGridView en el formulario y haga clic en el botón Eventos en la ventana Propiedades. El botón Eventos es el botón con el icono de rayo.

  2. Haga doble clic en el evento CellContentClick para crear y navegar hasta el código auxiliar del controlador.

  3. Agregue el código para comprobar en qué columna se hizo clic y para navegar hasta la página web si se hace clic en la columna 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());
        }
    }
    

Agregar código de acceso al servicio Live Search y ejecutar una consulta de búsqueda

Obtenga acceso al servicio creando instancias de una instancia del servicio en su aplicación y llamando a los métodos expuestos por el servicio.

Para obtener acceso y utilizar el servicio

  1. Abra Form1 en el Editor de código.

  2. Agregue el método siguiente a 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;
    }
    

Nota

Asegúrese de reemplazar searchRequest.AppID = "AppID" por el valor AppID obtenido del servicio Live Search.

Crear un controlador de eventos para ejecutar una búsqueda cuando se hace clic en el botón de búsqueda

Cree un controlador de eventos para el evento searchButton.Click y llame al método RunSearchRequest.

Para implementar la búsqueda cuando se hace clic en el botón

  1. Abra Form1 en la vista de diseño.

  2. Haga doble clic en el botón Buscar.

  3. Agregue la siguiente línea de código al controlador de eventos:

    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();
    }
    

Ejecutar la aplicación

Ejecute la aplicación y realice una búsqueda.

Para ejecutar la aplicación y realizar una búsqueda.

  1. Ejecute la aplicación (presione F5).

  2. Haga clic en Buscar para buscar en la Web Visual Studio, texto predeterminado de searchCriteriaTextBox.

    La cuadrícula muestra los primeros diez resultados de la búsqueda.

  3. Haga clic en una de las direcciones URL para navegar hasta ese sitio web.

  4. Escriba Redmond WA Weather en el cuadro de texto y haga clic en Buscar.

    La cuadrícula se actualiza con los nuevos resultados de la búsqueda.

Pasos siguientes

Tener acceso al servicio Live Search solo se considera un punto de partida para entender cómo mostrar los datos devueltos de un servicio que utiliza las características de enlace de datos en aplicaciones de Windows Forms. Después de conectar con un servicio diferente y de arrastrar los elementos de la ventana Orígenes de datos, su formulario debería contener un componente BindingSource; establezca la propiedad DataSource en los datos devueltos por el servicio. Para obtener más información, vea Información general sobre el componente BindingSource.

Nota

Los elementos que aparecen en la ventana Orígenes de datos son dependientes de la información que devuelve el servicio Web. Algunos servicios Web podrían no proporcionar suficiente información para que el Asistente para la configuración de orígenes de datos pueda crear objetos enlazables. Por ejemplo, si el servicio Web devuelve un objeto que no proporciona ningún esquema reconocible, ningún elemento aparecerá en la ventana Orígenes de datos cuando se complete el asistente.

Para agregar funcionalidad a la aplicación

Vea también

Conceptos

Enlazar controles a los datos en Visual Studio

Otros recursos

Modificar datos en la aplicación

Validar datos

Guardar datos

Tutoriales sobre datos