----ИНДЕКС----
1. метод запроса мыла
2. метод почтового запроса
3. Функция SHOWALLNODE (об атрибутах узла и отображении данных)
--------------------------
один. Пример запроса SOAP Ниже приведен пример запроса SOAP. Показанные заполнители необходимо заменить фактическими значениями.
POST/WebService1/UserSignOn.asmx HTTP/1.1
Хост: 192.100.100.81
Тип контента: текст/xml charset=utf-8;
Content-Length: длина
SOAPAction: " http://tempuri.org/LoginByAccount "
<?xml version="1.0"coding="utf-8"?>
<soap:Envelope xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:xsd=" http://www.w3.org/2001/XMLSchema " xmlns:soap=" http ://schemas.xmlsoap.org/soap/envelope/ ">
<мыло:Тело>
<LoginByAccount xmlns=" http://tempuri.org/ ">
<имя пользователя>строка</имя пользователя>
<пароль>строка</пароль>
</ЛогинПоАккаунт>
</мыло:Тело>
</мыло:Конверт>
Чтобы взаимодействовать с WEBSERVICE, вам необходимо создать запрос SOAP точно так же, как указано выше:
<%
url = " http://192.100.100.81/WebService1/UserSignOn.asmx "
SoapRequest="<?xml version="&CHR(34)&"1.0"&CHR(34)&"coding="&CHR(34)&"utf -8"&CHR(34)&"?>"& _
"<soap:Envelope xmlns:xsi="&CHR(34)&" http://www.w3.org/2001/XMLSchema-instance"&CHR(34 )&" "& _
"xmlns:xsd="&CHR(34)&" http://www.w3.org/2001/XMLSchema"&CHR(34 )&" "& _
"xmlns:soap="&CHR(34)&" http://schemas.xmlsoap.org/soap/envelope/"&CHR(34 )&">"& _
"<soap:Body>"& _
"<LoginByAccount xmlns="&CHR(34)&" http://tempuri.org/"&CHR(34 )&">"& _
"<имя пользователя>"&имя_пользователя&"</имя_пользователя>"& _
"<пароль>"&пароль&"</пароль>"& _
"</LoginByAccount>"& _
"</soap:Body>"& _
"</soap:Envelope>"
Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Откройте «POST», URL, false
xmlhttp.setRequestHeader "Тип контента", "text/xml;charset=utf-8"
xmlhttp.setRequestHeader «ХОСТ», «192.100.100.81»
xmlhttp.setRequestHeader «Длина контента», LEN (SoapRequest)
xmlhttp.setRequestHeader "SOAPAction", " http://tempuri.org/LoginByAccount " 'Должно быть тем же пространством имен, что и WEBSERVICE, в противном случае служба будет отклонена.
xmlhttp.Send(SoapRequest)
'Это успешно отправляет запрос SOAP, соответствующий примеру SOAP, с использованием XMLHTTP.
'Проверьте, успешно ли это:
Response.Write xmlhttp.Status&” ”
Response.Write xmlhttp.StatusText
Установить xmlhttp = Ничего
%>
В случае успеха отобразится 200 ok. В случае неудачи отобразится 500 Внутренняя ошибка сервера. Соединение: сохранение активности.
После успеха вы можете использовать ответ WEBSERVICE следующим образом:
Пример ответа SOAP Ниже приведен пример ответа SOAP. Показанные заполнители необходимо заменить фактическими значениями.
HTTP/1.1 200 ОК
Тип контента: текст/xml charset=utf-8;
Content-Length: длина
<?xml version="1.0"coding="utf-8"?>
<soap:Envelope xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:xsd=" http://www.w3.org/2001/XMLSchema " xmlns:soap=" http ://schemas.xmlsoap.org/soap/envelope/ ">
<мыло:Тело>
<LoginByAccountResponse xmlns=" http://tempuri.org/ ">
<LoginByAccountResult>строка</LoginByAccountResult>
</LoginByAccountResponse>
</мыло:Тело>
</мыло:Конверт>
Это пример ответа SOAP, соответствующий приведенному сейчас примеру запроса SOAP. После успешной отправки запроса вы можете просмотреть ответ:
Если xmlhttp.Status = 200, то
установите xmlDOC =server.CreateObject("MSXML.DOMDocument").
xmlDOC.load(xmlhttp.responseXML)
xmlStr = xmlDOC.xml
Установить xmlDOC=ничего
xmlStr = Заменить(xmlStr,"<","<")
xmlStr = Заменить(xmlStr,">",">")
Response.write xmlStr
В противном случае
Ответ. Напишите xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End if
Если запрос правильный, будет дан полный ответ. Если запрос неверный (например, неправильный номер счета и пароль), содержание ответа будет неполным.
Получите данные в ответе следующим образом:
Если xmlhttp.Status = 200, то
установите xmlDOC = server.CreateObject("MSXML.DOMDocument").
xmlDOC.load(xmlhttp.responseXML)
Response.Write xmlDOC.documentElement.selectNodes("//LoginByAccountResult")(0).text 'Отображение данных, в которых указан узел LoginByAccountResult (если он закодирован, его необходимо декодировать)
Установить xmlDOC = ничего
другого
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End if
отображает ФУНКЦИЮ каждого атрибута и данных узла:
Функция showallnode(rootname,myxmlDOC)' Надеюсь, все продолжат дополнять ее, написанную 844.
if rootname<>"" then
set nodeobj=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"")'Текущий объект узла
nodeAttributelen=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"").attributes.length'Текущее количество атрибутов узла
returnstring=returnstring&"<BR>Имя узла: "&rootname
if nodeobj.text<>"" then
returnstring=returnstring&"<BR>Текст узла: ("&nodeobj.text&")"
end if
returnstring=returnstring&"<BR>{<BR>"
if nodeAttributelen<>0 then
returnstring=returnstring&"<BR>Существуют атрибуты "&nodeAttributelen&", а именно: "
конец, если
для i=0 до nodeAttributelen-1
returnstring=returnstring&"<li>"&nodeobj.attributes(i).Name&": "&nodeobj.getAttribute(nodeobj.attributes(i).Name)&" </li>"
следующий
, если nodeobj.childNodes.Length<>0, тогда
if nodeobj.hasChildNodes() и lcase(nodeobj.childNodes.item(0).nodeName)<>"#text" then'есть ли дочерние узлы
установить childnodeobj=nodeobj.childNodes
childnodelen=nodeobj.childNodes.Length
returnstring=returnstring&"<BR><BR>Есть дочерние узлы "&childnodelen&";<BR>Они: "
для i=0 до childnodelen-1
returnstring=returnstring&"<li>"&childnodeobj.item(i).nodeName&"</li>"
следующий
конец, если
закончить, если
returnstring=returnstring&"<BR>}<BR>"
ответ.записать возвращаемую строку
установить nodeobj=ничего
конец, если
Конечная функция
Его можно использовать следующим образом:
Если xmlhttp.Status = 200, то
установите xmlDOC = server.CreateObject("MSXML.DOMDocument").
xmlDOC.load(xmlhttp.responseXML)
showallnode "LoginByAccountResponse",xmlDOC'Call SHOWALLNODE
Установить xmlDOC = ничего
другого
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End, если
2. Пример POST-запроса
HTTP-ПОСТ
Ниже приведен пример HTTP POST-запроса. Показанные заполнители необходимо заменить фактическими значениями.
POST/WebService1/UserSignOn.asmx/LoginByAccount HTTP/1.1
Хост: 192.100.100.81
Тип контента: приложение/x-www-form-urlencoded
Content-Length: длина
имени пользователя = строки и пароля = строки
Создайте POST-запрос:
<%
url = " http://192.100.100.81/WebService1/UserSignOn.asmx/LoginByAccount "
SoapRequest="username="&username&"&password="&password
Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Откройте «POST», URL, false
xmlhttp.setRequestHeader «Content-Type», «application/x-www-form-urlencoded»'Примечание
xmlhttp.setRequestHeader «ХОСТ», «192.100.100.81»
xmlhttp.setRequestHeader "Длина контента",LEN(SoapRequest)
xmlhttp.Send(SoapRequest)
'При этом успешно отправляется запрос POST, соответствующий примеру HTTP POST с использованием XMLHTTP.
'Проверьте, успешно ли это:
Response.Write xmlhttp.Status&” ”
Response.Write xmlhttp.StatusText
Установить xmlhttp = Ничего
%>
В случае успеха отобразится 200 ok. В случае неудачи отобразится 500 Внутренняя ошибка сервера. Соединение: сохранение активности.
После успеха вы можете использовать ответ WEBSERVICE следующим образом:
HTTP-ПОСТ
Ниже приведен пример ответа HTTP POST. Показанные заполнители необходимо заменить фактическими значениями.
HTTP/1.1 200 ОК
Тип контента: текст/xml charset=utf-8;
Content-Length: длина
<?xml version="1.0"coding="utf-8"?>
<string xmlns=" http://tempuri.org/">строка</string >
показывать:
Если xmlhttp.Status = 200, то
установите xmlDOC = server.CreateObject("MSXML.DOMDocument").
xmlDOC.load(xmlhttp.responseXML)
showallnode "строка",xmlDOC'call SHOWALLNODE
Установить xmlDOC = ничего
другого
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End if
Выше приведен метод использования ASP компонента XMLHTTP для отправки запроса SOAP и вызова WEBSERVICE. Я рекомендую использовать первый метод в среде ASP. Если есть лучший метод, свяжитесь со мной по адресу: [email protected] . Метод HTTP GET С китайским будут проблемы, да и объем данных невелик. Использование метода HTTP POST кажется излишним. На самом деле в приведенном выше примере используется метод POST, но это не POST-запрос. Чтобы использовать SOAP ToolKIT, вам необходимо установить программное обеспечение, последующей версии не существует. ---Конец полного текста