Пошаговое руководство. Подключение к данным в веб-службе (Windows Forms)

В этом пошаговом руководстве показано, как подключить приложение к веб-службе с помощью мастера мастер настройки источника данных.Будет необходимо подключиться к веб-службе "Поиск Live" и запустить поисковые запросы из приложения.Возвращенные службой данные (результаты поиска) будут отображены в форме Windows Forms.

В этом пошаговом руководстве демонстрируется выполнение следующих задач.

  • Создание нового проекта Приложение Windows.

  • Добавление ссылки на службу в приложение (подключение к службе "Поиск Live").

  • Добавление элементов управления для выполнения поисковых запросов (вызов методов, предоставляемых службой).

  • Создание кода для доступа к службе и возвращения данных.

  • Привязка данных, возвращенных службой к элементу BindingSource.

  • Отображение возвращенных службой данных в сетке.

Получение AppID

Идентификатор AppID из поиска Live бесплатен и служит для уникальной идентификации приложения в службе "Поиск Live".Этот идентификатор необходим для доступа к службе.

Чтобы получить AppID

  • Перейдите по адресу http://search.live.com/developer и получите бесплатный идентификатор AppID

    ПримечаниеПримечание

    Может понадобиться некоторое время (30-60 минут) для проверки AppID в службе.Если в течение этого времени возникнет общая ошибка клиента при выполнении приложения, возможно, что идентификатор AppID все еще находится в обработке на серверах поиска Live.

Создание проекта

Для создания нового проекта

  1. В меню Файл создайте новый проект.

  2. Выберите Приложение Windows Forms и назовите его WebServiceWalkthrough.

  3. Нажмите кнопку ОК.

    Проект создается и добавляется в Обозреватель решений.

Подключение к службе

Подключитесь к службе, выполнив мастер настройки источника данных.

Чтобы подключиться к веб-службе "Поиск Live"

  1. В меню Данные выберите пункт Показать источники данных.

  2. В окне Источники данных выберите элемент Добавить новый источник данных.

  3. На странице Выбор типа источника данных выберите Служба и нажмите кнопку Далее.

  4. Введите https://soap.search.msn.com/webservices.asmx?wsdl в поле URL-адрес диалогового окна Добавление ссылки на службу.

  5. Щелкните Перейти.

  6. После обнаружения веб-службы, измените пространство имен на LiveSearchService.

  7. Нажмите кнопку ОК, затем нажмите кнопку Готово для добавления в проект ссылки на службу.

    Ссылка на службу будет добавлена в проект, а окно Источники данных будет заполнено на основе элементов, возвращенных службой.

ПримечаниеПримечание

Так как различные веб-службы предоставляют различные функции, следующие действия в этом пошаговом предназначены для получения данных из веб-службы "Поиск Live".Стандартный процесс получения данных из службы заключается в создании экземпляра службы с последующим вызовом методов, предоставляемых службой.После перетаскивания элементов из окна "Источники данных" в форме должен содержаться компонент BindingSource; задайте свойство DataSource равным данным, возвращенным службой.

Создание объекта DataGridView для отображения данных, возвращенных службой

Создайте сетку данных для привязанных данных путем перетаскивания элементов из окна Источники данных на форму.После добавления сетки настройте столбы для отображения только нужных столбцов.Затем задайте ссылку в столбце URL-адреса, чтобы пользователи могли щелкнуть этот URL-адрес и перейти на веб-сайты, возвращенные поисковым запросом.

Чтобы создать объект DataGridView с привязкой к данным.

  1. Разверните узел SearchResponse в окне Источники данных.

  2. Разверните узел Ответы.

  3. Перетащите узел Результаты на форму.

    На форму будут добавлены объекты DataGridView, BindingSource и BindingNavigator

  4. Выберите объект resultsDataGridView, который был добавлен на форму.

  5. В окне Свойства выберите свойство Columns и щелкните многоточие (...), чтобы открыть диалоговое окно Диалоговое окно "Правка столбцов" (режим конструктора).

  6. Выберите столбец URL-адрес и задайте следующие значения:

    1. Для свойства ColumnType значение DataGridViewLinkColumn.

    2. Для свойства AutoSizeMode значение AllCells.

  7. Удалите все столбцы, кроме Заголовок, Описание и URL-адрес.

  8. Нажмите кнопку ОК.

Добавление элементов управления для ввода критериев поиска и выполнения поискового запроса

Добавление элементов управления на существующую панель инструментов для запуска поисковых запросов.

Чтобы добавить текстовое поле и кнопку на форму

  1. На панели инструментов формы щелкните правой кнопкой мыши значок диска, который отображается в сером цвете, и последовательно выберите "Вставить" и TextBox.

  2. В окне Свойства задайте для свойства Name значение searchCriteriaTextBox.

  3. Задайте свойству Text значение Visual Studio.

  4. Добавьте кнопку на панель инструментов и назовите ее searchButton.

  5. В окне Свойства задайте значение свойства DisplayStyle, равное Text.

  6. Задайте для свойства Текст значение "Поиск".

Создание обработчика событий для открытия веб-сайта по щелчку объектов в сетке

Добавьте обработчик события для события CellContentClick.

Чтобы создать обработчик события CellContentClick

  1. Выберите в форме объект resultsDataGridView, затем нажмите кнопку "События" в окне Свойства.Кнопка "События" — это кнопка со значком молнии.

  2. Дважды щелкните событие CellContentClick для создания и перехода к заглушке обработчика.

  3. Добавьте код для проверки щелчка столбца и перехода на веб-страницу при подтверждении щелчка столбца "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());
        }
    }
    

Добавление кода для доступа к службе "Поиск Live" и выполнения поискового запроса

Обратитесь к службе, создав экземпляр службы в приложении и вызвав методы, предоставляемые службой.

Чтобы обратиться к службе и получить доступ к данным

  1. Откройте форму Form1 в редакторе кода.

  2. Добавьте в форму 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;
    }
    
ПримечаниеПримечание

Замените строку searchRequest.AppID = "AppID" на значение AppID, полученное от службы "Поиск Live".

Создание обработчика события для выполнения поиска при нажатии кнопки "Поиск".

Создайте обработчик события searchButton.Click и вызовите метод RunSearchRequest.

Чтобы реализовать поиск по нажатию кнопки

  1. Откройте форму Form1 в режиме конструктора.

  2. Дважды нажмите кнопку Поиск.

  3. Добавьте следующую строку кода в созданный обработчик событий:

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

Запуск приложения

Запустите приложение и выполните поиск.

Чтобы запустить приложение и выполнить поиск

  1. Запустите приложение (нажмите клавишу F5).

  2. Нажмите кнопку Поиск для выполнения в сети поискового запроса Visual Studio — текста, заданного в searchCriteriaTextBox по умолчанию.

    В сетке будут отображены первые десять результатов поиска.

  3. Щелкните один из URL-адресов для перехода на веб-страницу.

  4. В текстовом поле введите погода в Москве и нажмите кнопку Поиск.

    В сетке будут отображаться новые результаты поиска.

Следующие действия

Доступ к службе "Поиск Live" необходим для понимания путей отображения данных, возвращенных службой, с использованием функций привязки к данным в приложениях Windows Forms.После подключения к другой службе и перетаскивания элементов из окна Источники данных в форме должен содержаться компонент BindingSource; задайте свойство DataSource равным данным, возвращенным службой.Дополнительные сведения см. в разделе Общие сведения о компоненте BindingSource.

ПримечаниеПримечание

Элементы, отображаемые в окне Источники данных, зависят от информации, которую возвращает веб-служба.Некоторые веб-службы могут не предоставлять достаточно информации для Мастера настройки источника данных при создании связываемых объектов.Например, если веб-служба возвращает объект, который не предоставляет какой-либо обнаруживаемой схемы, то после завершения работы мастера в окне Источники данных не появится элементов.

Добавление функциональных возможностей в приложение

См. также

Основные понятия

Привязка элементов управления к данным в Visual Studio

Редактирование данных в приложении

Проверка данных

Сохранение данных

Другие ресурсы

Пошаговые руководства работы с данными