Отправка SOAP-запросов с использованием клиента Visual Studio 2005 (C#)
Этот подраздел содержит образцы приложений, в которых клиент Visual Studio 2005 отправляет SOAP-запросы экземпляру SQL Server 2005 и обрабатывает SOAP-ответы. Запросы отправляются методам конечных точек, созданным в разделе Образцы приложений, отправляющих запросы к собственным веб-службам с поддержкой XML.
Чтобы пользоваться этим приложением, рекомендуется ознакомиться с основными сведениями и описаниями процедур, изложенными в разделах Настройка сервера на прослушивание запросов собственных веб-служб с поддержкой XML и Написание клиентских приложений.
Примечание. |
---|
Образцу требуется небольшая начальная настройка. Прежде чем продолжить работу с образцом, выполните шаги, описанные в разделе Образцы приложений, отправляющих запросы к собственным веб-службам с поддержкой XML. |
Отправка SOAP-запросов
В этом приложении создается форма, содержащая кнопки и текстовые поля, необходимые для отправки SOAP-запросов к конечной точке.
При отправке SOAP-запроса значение идентификатора заказчика, указанное в текстовом поле, передается в качестве входного параметра хранимой процедуре GetCustomerInfo. Если в этом поле ничего не указано, передается пустая строка, и тогда возвращаются заказчики, для которых в качестве CustomerID указана пустая строка. Если введено значение NULL, возвращаются заказчики, у которых в качестве CustomerID введено значение NULL. В этом случае в SOAP-запрос автоматически добавляется атрибут xsi:nil = 'true', указывая на значение параметра, равное NULL.
Хранимая процедура GetCustomerInfo показывает, как работать с входными и выходными параметрами, сообщениями об ошибках и результатами. Приложение также отправляет SOAP-запросы к пользовательской функции. Кроме того, это приложение SOAP может обращаться к следующим нерегламентированным запросам:
- запросу SELECT для получения списка всех сотрудников;
- запросу SELECT для получения сотрудника, идентификатор которого передан в качестве входного параметра.
Обработка SOAP-ответов
Когда результаты SOAP-запроса возвращаются в виде массива объектов, клиентское приложение определяет тип каждого из объектов в нем и затем соответствующим образом обрабатывает каждый объект. Затем оно отображает следующие сведения о каждом из элементов массива объектов:
- тип данных значения в элементе массива;
- само значение: результирующий набор, код возврата, значения выходных параметров и т. д.
Создание рабочего образца
Так как создание этого образца состоит из множества шагов, приложение разделено на пять частей.
- Часть 1. Выполнение хранимой процедуры GetCustomerInfo.
- Часть 2. Выполнение хранимой процедуры.
- Часть 3. Выполнение SQL-запроса без параметров.
- Часть 4. Выполнение SQL-запроса с параметрами.
- Часть 5. Выполнение пользовательской функции.
В каждой из частей содержится набор инструкций, а в конце каждой части работу приложения можно проверить.
Часть 1. Выполнение хранимой процедуры GetCustomerInfo
- На клиентском компьютере из группы программ Microsoft Visual Studio 2005 запустите Microsoft Visual Studio 2005.
- Выберите Создать проект.
- Выберите Проекты Visual C# в качестве Типа проекта.
- Укажите NativeSOAPApp1 в качестве имени проекта
- Укажите местоположение для сохранения проекта.
- Выберите в качестве шаблона Приложение Windows, а затем нажмите кнопку OK.
- В окне обозревателя решений щелкните правой кнопкой Ссылки, а затем выберите Добавить веб-ссылку. Есть и другой способ добавить веб-ссылку: в Конструктор щелкните Добавить веб-ссылку.
- В поле Адрес введите https://Server/sql?wsdl и нажмите клавишу ВВОД. При этом в URL-адрес необходимо ввести действительное имя сервера.
- Щелкните Добавить ссылку. Это действие создает необходимые классы-посредники, позволяющие вызывать методы в WSDL-документе.
Часть 2. Выполнение хранимой процедуры
- В меню «Вид» выберите Область элементов, чтобы в области «Form1.cs [Конструктор]» открылась область элементов. Для открытия области элементов можно также нажать CTRL + ALT + X.
- Добавьте на форму Form1 текстовое поле (textBox1), кнопку (button1) и список (listBox1).
- Щелкните правой кнопкой текстовое поле и выберите пункт Свойства. Измените значение Text в textBox1 на 1. Это значение идентификатора заказчика по умолчанию.
- Щелкните правой кнопкой мыши кнопку button1 и выберите пункт Свойства.
- Измените значение свойства Text с button1 на ExecSP.
- Измените значение свойства (name) на ExecSP.
- Щелкните правой кнопкой мыши список listBox1 и выберите пункт Свойства. Измените значение свойства HorizontalScrollbar на True.
- Дважды щелкните ExecSP.
- Скопируйте в эту функцию код отсюда: Листинг кода C# для ExecSP (встроенная поддержка SOAP).
- Обновите код. Замените ссылки на
server
именем узла, определенным во время создания конечной точки с помощью инструкции CREATE ENDPOINT. - Сохраните и скомпилируйте проект. Дополнительные сведения см. в предыдущем подразделе «Компиляция кода».
Часть 3. Выполнение SQL-запроса без параметров
Эта часть клиентского приложения выполняет нерегламентированный запрос (FOR XML), который получает список сотрудников из таблицы Employee в базе данных AdventureWorks.
- На вкладке [Design] на форму Form1 добавьте еще одну кнопку (button1).
- Щелкните правой кнопкой мыши эту кнопку и выберите пункт Свойства.
- Измените значение свойства Text с button1 на BatchQueryFindAllEmps.
- Измените значение свойства (name) на BatchQueryFindAllEmps.
- Дважды щелкните BatchQueryFindAllEmps.
- Скопируйте в эту функцию код отсюда: Листинг кода C# для BatchQueryFindAllEmps (встроенная поддержка SOAP).
- Обновите код. Замените ссылки на
server
именем узла, определенным во время создания конечной точки с помощью инструкции CREATE ENDPOINT. - Сохраните и скомпилируйте проект. Дополнительные сведения см. в предыдущем подразделе «Компиляция кода».
Часть 4. Выполнение SQL-запроса с параметрами
Эта часть аналогична предыдущей за исключением того, что SOAP-запрос для нерегламентированного запроса включает параметр запроса. Запрос FOR XML запрашивает сведения о сотруднике по указанному идентификатору.
- В форме Form1 добавьте кнопку (button1) на вкладку [Конструктор].
- Щелкните правой кнопкой мыши эту кнопку и выберите пункт Свойства.
- Измените значение свойства Text с button1 на BatchQueryFindAnEmp.
- Измените значение свойства (name) на BatchQueryFindAnEmp.
- Дважды щелкните BatchQueryFindAnEmp.
- Скопируйте в эту функцию код отсюда: Листинг кода C# для BatchQueryFindAnEmp (встроенная поддержка SOAP).
- Обновите код. Замените ссылки на
server
именем узла, определенным во время создания конечной точки с помощью инструкции CREATE ENDPOINT. - Сохраните и скомпилируйте проект. Дополнительные сведения см. в предыдущем подразделе «Компиляция кода».
Часть 5. Выполнение пользовательских функций
В этой части клиентское приложение отправляет SOAP-запрос к веб-методу UDFReturningScalar. Веб-метод соответствует определяемой пользователем функции, отправляющей целочисленное значение.
- В форме Form1 добавьте кнопку (button1) на вкладку [Конструктор].
- Щелкните правой кнопкой мыши эту кнопку и выберите пункт Свойства.
- Измените значение свойства Text с button1 на ExecUDFReturningScalar.
- Измените значение свойства (name) на ExecUDFReturningScalar.
- Дважды щелкните ExecUDFReturningScalar.
- Скопируйте в эту функцию код отсюда: Листинг кода C# для ExecUDFReturningScalar (встроенная поддержка SOAP).
- Обновите код. Замените ссылки на
server
именем узла, определенным во время создания конечной точки с помощью инструкции CREATE ENDPOINT. - Сохраните и скомпилируйте проект. Дополнительные сведения см. в предыдущем подразделе «Компиляция кода».
- Нажмите кнопку ExecUDFReturningScalar. Возвращенное от пользовательской функции значение отображается в списке.
Так как для конечной точки определена встроенная проверка подлинности, в коде имеется следующая строка: proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
Если используется проверка подлинности SQL Server, рекомендуется заменить ее кодом, реализующим заголовки WS-Security и обеспечивающим учетные данные на базе проверки подлинности SQL Server. Дополнительные сведения см. в разделе Проверка подлинности SQL Server по протоколу SOAP.
Примечание. |
---|
При использовании проверки подлинности SQL Server или обычной проверки подлинности SQL Server 2005 требует использования протокола SSL, чтобы обеспечить безопасную зашифрованную передачу учетных данных пользователя, которые в противном случае будут передаваться открытым текстом. Дополнительные сведения о включении протокола SSL для конечных точек HTTP см. в разделе Настройка сертификата для использования протоколом SSL. |
Компиляция кода
SQL Server 2005 устанавливает платформу Microsoft .NET Framework 2.0 как часть процесса установки. В данном руководстве по компиляции использована последняя версия .NET Framework (имеющая наибольший номер в папке \WINDOWS\Microsoft.NET\Framework)
Для компиляции кода образца
- Сохраните весь проект.
- Откройте командную строку и перейдите в папку, в которую он сохранен.
- Находясь в этой папке, скопируйте в нее файл Reference.cs из вложенной папки Web Reference\Server (например, скопируйте «Web Reference\Server\Reference.cs»). Файлы Form1.cs и Reference.cs должны находиться в одной и той же папке.
- Скомпилируйте код и укажите имя исполняемого (EXE) файла. Например, если имя исполняемого файла — NativeSOAPApp1.exe, то командная строка будет выглядеть так:
\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\csc.exe /out:NativeSOAPApp1.exe Form1.cs Reference.cs
xxxxx означает номер папки, который соответствует версии .NET Framework.
В результате в текущем каталоге будет создан исполняемый файл (NativeSOAPApp1.exe).
Примечание. |
---|
Если используется более ранняя версия .NET Framework, может быть выдана ошибка выполнения. В этом случае попытайтесь обновить хранимую процедуру GetCustomerInfo путем добавления предложения FOR XML AUTO в конец инструкции SELECT следующим образом: |
SELECT TOP 3 SalesOrderID, OrderDate
FROM SalesOrderHeader
WHERE CustomerID = @CustomerID
FOR XML AUTO
Результаты выполнения хранимой процедуры отображаются в списке.
См. также
Справочник
Настройка сервера на прослушивание запросов собственных веб-служб с поддержкой XML
Структура запроса и ответного сообщения SOAP
Образцы приложений, отправляющих запросы к собственным веб-службам с поддержкой XML
Правила и ограничения собственных веб-служб с поддержкой XML
Основные понятия
Оптимальные методы использования собственных веб-служб с поддержкой XML
Другие ресурсы
Написание клиентских приложений