Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНАЯ РАБОТА Web-сервис.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
68.04 Кб
Скачать

2. Использование Web-сервиса

1 Создать новый Web-сайт:

Пуск | Microsoft Visual Studio 2005 | Microsoft Visual Studio 2005

ф. Microsoft Visual Studio | File → New → Web Site… → ф. New Web Site → Visual Studio Installed Templates → выбр. Web Site →

Location → выбр. HTTP → http://имя_сервера(например, localhost)/Lab4_ASP

Language → выбр. Visual C#

2 Перейти на страницу ввода программного кода:

ф. Lab1_ASP → Default. aspx → Source | удалить весь код, расположенный между открывающим и закрывающим тегами элемента BODY

3 Скопировать элемент BODY вместе со всеми вложенными элементами из файла Default. aspx первой лабораторной работы.

4 Подключить к Web-приложению Web-сервис WebService:

ф. Solution Explorer | пр. кн. мыши на Lab4_ASP → выбр. Add Web Reference…

ф. Add Web Reference | стр. URL ← ввести "http://localhost/WebService/Service. asmx" | нажать на кн. Add Reference.

5 Импортировать в Web-приложение подключенный Web-сервис как библиотеку классов и методов. Для этого после описания библиотек, подключаемых по умолчанию, ввести следующий код:

<%@ Import Namespace="localhost" %>

6 Ввести обработчик события загрузки страницы:

<script language="C#" runat="server">

void Page_Load(object sender, EventArgs e)

{

}

</script>

7 Создать экземпляр сервиса (класс Service) для использования методов Web-сервиса:

Service s = new Service();

8 Создать экземпляр класса DataSet и заполнить его с помощью метода GetFaculty Web-сервиса:

DataSet ds_f = s. GetFaculty();

9 Заполнить раскрывающийся список факультетов (элемент с ID="faculty") данными из DataSet:

faculty. DataSource = ds_f. Tables["f"].DefaultView;

faculty. DataTextField = "name";

faculty. DataValueField = "id";

faculty. DataBind();

10 Аналогичным образом заполнить списки групп и специальностей.

11 Создать файл Browse. aspx (см. п. 2). Заменить весь код созданной страницы на код одноименного файла из первой лабораторной работы.

12 В соответствии с пп. 5–10 заполнить таблицу на странице Browse. aspx с помощью метода University_DataSet Web-сервиса.

13 Проверить работоспособность созданного Web-приложения. Для этого перейти на страницу Lab3_ASP - Microsoft Visual Studio | Default. aspx и нажать сочетание клавиш [Ctrl+F5].

Вариант Б. Технология PHP и СУБД MySQL

1. Программирование Web-сервиса

1. Создать папку, в которой будут размещены все файлы Web-приложения, и назвать ее, к примеру, Lab4_PHP.

2. Создать папку, в которой будут размещены файлы Web-сервиса, и назвать ее, к примеру, server.

3. Скопировать в папку server файл nusoap. php (размещен на диске D в папке Student) – библиотеку для работы с сообщениями SOAP.

4. В папке server создать новый файл и назвать его, к примеру, index. php. Открыть файл с помощью любого редактора.

5. Ввести открывающий тег сценария <?php

6. Подключить код сценария nusoap. php:

require_once('nusoap. php');

7. Установить соединение с базой данных MySQL University

7.1 Задать объект link соединения с базой данных

$link = @mysql_connect("localhost", "root") or die("Невозможно соединиться с сервером");

7.2 Выбрать базу данных University

$db=@mysql_select_db("university") or die("Нет такой базы данных");

7.3 Установить кириллическую кодировку (cp-1251) для корректной передачи и получения данных из базы данных. Для этого в сценарий PHP из предыдущего пункта ввести следующий код:

@mysql_query("SET SESSION character_set_results = cp1251;");

@mysql_query("SET SESSION Character_set_client = cp1251;");

@mysql_query("SET SESSION Character_set_results = cp1251;");

@mysql_query("SET SESSION Collation_connection = cp1251_general_ci;");

@mysql_query("SET SESSION Character_set_connection = cp1251;");

8. Создать экземпляр SOAP-сервера:

$server = new soap_server;

9. Зарегистрировать метод faculty (извлечения информации о факультетах)

9.1 Вызвать метод register объекта server

$server->register(

9.2 Задать название метода – faculty: 'faculty',

9.3 Указать выходные параметры метода:

array('return' => 'xsd:string'),

9.4 Задать используемое пространство имен:

'uri:facultyquery',

9.5 Задать заголовок SOAPAction

'uri:facultyquery/faculty',

9.6 Задать вид сервиса rpc/encoded

'rpc',

'encoded'

);

10. Определить метод faculty как функцию PHP.

10.1 Задать имя функции (faculty) и открывающую фигурную скобку:

function faculty() {

10.2 Создать переменную f_query для хранения текста запроса к базе данных для извлечения информации о специальностях факультета

$f_query="select * from `faculty`";

10.3 Выполнить запрос к базе данных:

$f=mysql_query($f_query);

10.4 Создать строковую переменную facOptions для хранения XML-представления информации о факультетах. Записать в нее открывающий тег корневого элемента faculties

10.5 Сформировать цикл while по всем строкам результирующего набора f:

while ( $fac = mysql_fetch_array( $f ) )

{

}

10.6 Сформировать XML-элемент faculty, соответствующий одной записи из таблицы Faculty. В элементе задать атрибуты ID и name, которые соответствуют одноименным полям в таблице базы данных. Для этого между открывающей и закрывающей фигурными скобками цикла ввести следующий код:

$facOptions = $facOptions."<faculty ID='".$fac['ID']."' name='".$fac['name']."'/>";

10.7 В качестве значения, возвращаемого функцией faculty, указать текстовую переменную facOptions, дополненную закрывающим тегом элемента faculties:

return $facOptions.'</faculties>';

}

11. Аналогичным образом (см. п. 9) зарегистрировать метод spec, формирующий XML-список специальностей.

12. Определить метод spec как функцию PHP (см. п. 10).

13. Зарегистрировать метод gr, формирующий XML-список групп и определить его как функцию PHP.

14. Зарегистрировать метод usp (успеваемость) с входным параметром name (номер группы). Для этого ввести следующий код:

$server->register(

'usp',

array('group' => 'xsd:string'),

array('return' => 'xsd:string'),

'uri:uspquery',

'uri:uspquery/usp',

'rpc',

'encoded'

);

15. Определить метод usp как функцию PHP:

function usp($group){

$usp_query="SELECT `fio`, `subject`, `ocenka`, `data`

FROM `uspev`, `student`

WHERE `uspev`.`student`= `student`.`zk` AND `gr`=".$group;

$usp=mysql_query($usp_query);

$usp_count = mysql_num_rows($usp);

$usOptions = '<uspev>';

while ( $u = mysql_fetch_array( $usp ) )

{

$usOptions = $usOptions."<usp fio='".$u['fio']."' subject='".$u['subject']."' ocenka='".$u['ocenka']."' data='".$u['data']."'/>";

}

return $usOptions.'</uspev>';

}

16. Вызвать сервис с помощью HTTP-запроса

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';

$server->service($HTTP_RAW_POST_DATA);

17. Ввести закрывающий тег сценария?>.