Создавать SOAP-сообщения очень просто, если есть WSDL-документ, и вы его четко придерживаетесь. Будем двигаться небольшими шагами. Начнем с процедуры test_output. Сначала необходимо создать компонент XMLHTTP и сформировать начало SOAP-тела (Body).
VBScript
Dim xmlhttpSet xmlhttp = CreateObject("Msxml2.XMLHTTP")xmlhttp.open "POST","http://dcit06/srv/webserv",falseDim soap_messoap_mes = "<?xml version=""1.0"" encoding=""windows-1251""?>" _ & "<soap:Envelope xmlns:soap=" _ & ""http://schemas.xmlsoap.org/soap/envelope/"">" _ & "<soap:Body>" _ &... |
Из WSDL-файла видно, что операция test_output состоит из запроса и ответа. Запрос определяется набором параметров test_outputIn (секция message под названием test_outputIn). Этот набор состоит из одного элемента test_output, в который вложен элемент i, представляющий собственно значение выходного параметра для метода., Тип элемента i - xsd:int, он может принимать значение nil. Дабы не привлекать пространство имен http://www.w3.org/2001/XMLSchema-instance, в котором определен атрибут nil, задающий пустое значение, просто передадим в качестве значения параметра i нуль.
Остаток скрипта
"<test_output xmlns=""http://dcit06/srv/webserv"">" & _ "<i>0</i>" & _ "</test_output>" & _ "</soap:Body>" & _ "</soap:Envelope>"xmlhttp.send soap_mesWScript.Echo "****************************************"WScript.Echo vbTab & "Response for test_output"WScript.Echo "----------------------------------------"WScript.Echo xmlhttp.responseText |
После формирования строки запроса можно вызывать Web-сервис и вывести результаты на консоль. Подобным же образом составляется тест для хранимой процедуры CustOrderHist и функции test_ret_func.
ПРЕДУПРЕЖДЕНИЕ Мною замечена ошибка в SQLXML: параметры Web-метода трактуются как неквалифицированные элементы (unqualified elements), т.е. если написать запрос так: <t:test_output xmlns:t="http://dcit06/srv/webserv"> <t:i>0</t:i> </t:test_output>, то SQLXML вернет ошибку: The input parameter 't:i' is not a parameter to the stored procedure called. Если убрать префикс пространства имен у элемента i (как если бы он к нему не относился)– все проходит без ошибок. |
Наверняка через некоторое (не слишком большое) время вам надоест создавать SOAP-сообщения вручную. Раз так, переходим к следующему разделу.
ПРИМЕЧАНИЕ Прекрасным инструментом для отладки Web-сервисов является XMLSPY. Он автоматически на основе WSDL-файла создает сообщения SOAP (которые можно затем вручную отредактировать), позволяет вызвать Web-метод, а также может выступать в роли трассировщика, позволяя отлаживать Web-сервис. |