Веб-службы и Internet Explorer

Несколько лет тому назад в Microsoft были начаты работы по созданию сценария, который позволил бы обращаться к веб-службам из броузера. По сути, этот сценарий создает объект XMLHttpRequest, настраивает HTTP-заголовки, необходимые для оформления запроса SOAP, создает тело запроса, ожидает ответ и преобразует его обратно в представление, которое может использовать JavaScript. Кроме того, сценарий в состоянии выполнять интерпретацию описаний веб-служб в формате WSDL (Web Services Description Language – язык описания веб?служб) и генерировать локальный объек-посредник. Идея довольно проста, чего нельзя сказать о реализации. Окончательная версия сценария (версия 1.0.1.1120) содержала порядка 2300 строк программного кода. К сожалению, в 2002 году Microsoft забросила работу над компонентом. Тем более жаль, так как он до сих пор неплохо работает. К счастью, сценарий можно найти в архивах MSDN, по адресу: http://msdn.microsoft.com/archive/en?us/samples/internet/behaviors/
library/webservice/default.asp.

Загрузите файл webservice.htc и сохраните его в каталоге со сценариями примеров. Расширение .htc происходит от «HTML control» (элемент управления HTML), известный также, как аспект поведения Internet Explorer.


Загрузить файл в свое приложение можно с помощью стиля CSS, который поддерживается только в Internet Explorer.


Имя, указанное с помощью атрибута id, может затем использоваться в сценарии JavaScript для доступа как к самому элементу управления, так и для обращения к веб?службе, с которой он будет связан.

В данном случае под словом «связывание» подразумевается предоставление ссылки на описание (в формате WSDL) веб-службы, которую предполагается использовать. Для этой цели используется метод use-Service() из сценария .htc. Кроме того, необходимо завести уникальный идентификатор, который позднее будет использоваться для доступа к конкретной веб-службе.
WebService.useService("MathService.asmx?WSDL", "MathService");

После этого можно вызвать веб-службу. Порядок следования параметров, которые передаются методу callService(), несколько отличается от порядка следования параметров, передаваемых объекту-посреднику, созданному платформой ASP.NET AJAX. Обязательными параметрами являются:

• Ссылка на метод обратного вызова
• Имя вызываемого веб-метода
• Параметры, передаваемые веб-службе

Следует учитывать, что в данном случае не поддерживается возможность обработки ошибок (в отличие от ASP.NET AJAX, где клиентский сценарий получает информацию об исключении).

Вызов, приведенный ниже, выполняет операцию деления с использованием службы MathService:

WebService.MathService.callService(
callComplete,
"DivideNumbers",
6, 7);

После этого функция обратного вызова принимает результат в виде объекта, в котором свойство value содержит значение, возвращаемое веб-службой:

function callComplete(result) {
document.getElementsById("c").innerHTML = result.value;
}

В примере 5.7 приводится полный исходный текст этого примера.
Пример 5.7.


Вызов веб?службы из Internet Explorer
MathServiceInternetExplorer.htm

ASP.NET AJAX


(body)




:

=


(br /)
onclick="callService(this.form);" />


(/body)
.



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела ASP.NET AJAX на эту тему:
Веб-службы и броузеры Mozilla
Веб-службы и броузеры обоих типов
Доступ к веб-службам из JavaScript
Методы страницы
Обмен данными со сложной структурой

Вернуться в раздел: ASP.NET AJAX / Веб-службы