----ÍNDICE----
1. método de solicitud de jabón
2. método de solicitud posterior
3. Función SHOWALLNODE (sobre atributos de nodo y visualización de datos)
--------------------------
uno. Ejemplo de solicitud SOAP A continuación se muestra un ejemplo de solicitud SOAP. Los marcadores de posición que se muestran deben reemplazarse por valores reales.
POST /WebService1/UserSignOn.asmx HTTP/1.1
Anfitrión: 192.100.100.81
Tipo de contenido: texto/xml; charset=utf-8
Longitud del contenido: longitud
SOAPAction: " http://tempuri.org/LoginByAccount "
<?xml versión="1.0" codificación="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/ ">
<jabón:Cuerpo>
<LoginByAccount xmlns=" http://tempuri.org/ ">
<nombre de usuario>cadena</nombre de usuario>
<contraseña>cadena</contraseña>
</LoginByAccount>
</soap:Cuerpo>
</soap:sobre>
Para interactuar con WEBSERVICE, necesita crear una solicitud SOAP exactamente igual a la anterior:
<%
url = " http://192.100.100.81/WebService1/UserSignOn.asmx "
SoapRequest="<?xml versión="&CHR(34)&"1.0"&CHR(34)&" codificación="&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 )&">"& _
"<nombre de usuario>"&nombre de usuario&"</nombre de usuario>"& _
"<contraseña>"&contraseña&"</contraseña>"& _
"</LoginByAccount>"& _
"</soap:Body>"& _
"</soap:Envelope>"
Establecer xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Abrir "POST",url,falso
xmlhttp.setRequestHeader "Tipo de contenido", "text/xml;charset=utf-8"
xmlhttp.setRequestHeader "HOST", "192.100.100.81"
xmlhttp.setRequestHeader "Contenido-Longitud", LEN (SoapRequest)
xmlhttp.setRequestHeader "SOAPAction", " http://tempuri.org/LoginByAccount " 'Debe ser el mismo espacio de nombres que WEBSERVICE; de lo contrario, el servicio será rechazado
xmlhttp.Enviar (SoapRequest)
'Esto envía con éxito una solicitud SOAP que coincide con el ejemplo SOAP usando XMLHTTP.
'Comprueba si es exitoso:
Respuesta.Escribir xmlhttp.Estado&” ”
Respuesta.Escribir xmlhttp.StatusText
Establecer xmlhttp = Nada
%>
Si tiene éxito, se mostrará 200 ok. Si no se logra, se mostrará 500 Error de conexión interna del servidor: mantener activo.
Después del éxito, puede utilizar la respuesta de WEBSERVICE de la siguiente manera:
Ejemplo de respuesta SOAP A continuación se muestra un ejemplo de respuesta SOAP. Los marcadores de posición que se muestran deben reemplazarse por valores reales.
HTTP/1.1 200 correcto
Tipo de contenido: texto/xml; charset=utf-8
Longitud del contenido: longitud
<?xml versión="1.0" codificación="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/ ">
<jabón:Cuerpo>
<LoginByAccountResponse xmlns=" http://tempuri.org/ ">
<LoginByAccountResult>cadena</LoginByAccountResult>
</LoginByAccountResponse>
</soap:Cuerpo>
</soap:sobre>
Este es el ejemplo de respuesta SOAP correspondiente al ejemplo de solicitud SOAP de ahora. Una vez que la solicitud se envía correctamente, puede ver la respuesta:
Si xmlhttp.Status = 200, entonces
establezca xmlDOC =server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
xmlStr = xmlDOC.xml
Establecer xmlDOC=nada
xmlStr = Reemplazar(xmlStr,"<","<")
xmlStr = Reemplazar(xmlStr,">",">")
Respuesta.escribir xmlStr
De lo contrario,
Response.Write xmlhttp.Status&" "
Respuesta.Escribir xmlhttp.StatusText
Fin si
Si la solicitud es correcta, se dará una respuesta completa. Si la solicitud es incorrecta (por ejemplo, el número de cuenta y la contraseña son incorrectos), el contenido de la respuesta estará incompleto.
Obtenga los datos en la respuesta de la siguiente manera:
Si xmlhttp.Status = 200, entonces
establezca xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
Response.Write xmlDOC.documentElement.selectNodes("//LoginByAccountResult")(0).text 'Muestra los datos donde está el nodo LoginByAccountResult (si está codificado, debe decodificarse)
Establecer xmlDOC = nada
más
Respuesta.Escribir xmlhttp.Status&" "
Respuesta.Escribir xmlhttp.StatusText
Finalizar si
muestra la FUNCIÓN de cada atributo y datos de un nodo:
Función showallnode(rootname,myxmlDOC)' Espero que todos sigan completándolo el 2005-1-9 escrito por 844.
si nombre raíz<>"" entonces
establezca nodeobj=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"")'Objeto de nodo actual
nodeAttributelen=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"").attributes.length'El número actual de atributos de nodo
returnstring=returnstring&"<BR>Nombre de nodo: "&rootname
if nodeobj.text<>"" entonces
returnstring=returnstring&"<BR>El texto del nodo: ("&nodeobj.text&")"
finalizar si
returnstring=returnstring&"<BR>{<BR>"
si nodeAttributelen<>0 entonces
returnstring=returnstring&"<BR>Hay atributos "&nodeAttributelen&", que son: "
finalizar si
para i=0 a nodeAttributelen-1
returnstring=returnstring&"<li>"&nodeobj.attributes(i).Name&": "&nodeobj.getAttribute(nodeobj.attributes(i).Name)&" </li>"
siguiente
si nodeobj.childNodes.Length<>0 entonces
si nodeobj.hasChildNodes() y lcase(nodeobj.childNodes.item(0).nodeName)<>"#text" entonces, si hay nodos secundarios
establecer childnodeobj=nodeobj.childNodes
childnodelen=nodeobj.childNodes.Longitud
returnstring=returnstring&"<BR><BR>Hay nodos secundarios "&childnodelen&";<BR>Son: "
para i=0 a childnodelen-1
returnstring=returnstring&"<li>"&childnodeobj.item(i).nodeName&"</li>"
próximo
terminar si
finalizar si
cadena de retorno=cadena de retorno&"<BR>}<BR>"
respuesta.escribir cadena de retorno
establecer nodeobj = nada
terminar si
Función final
Se puede utilizar así:
Si xmlhttp.Status = 200, entonces
establezca xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
showallnode "LoginByAccountResponse", xmlDOC'Call SHOWALLNODE
Establecer xmlDOC = nada
más
Respuesta.Escribir xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
Fin si
2. Ejemplo de solicitud POST
ENVÍO HTTP
A continuación se muestra un ejemplo de solicitud HTTP POST. Los marcadores de posición que se muestran deben reemplazarse por valores reales.
POST /WebService1/UserSignOn.asmx/LoginByAccount HTTP/1.1
Anfitrión: 192.100.100.81
Tipo de contenido: aplicación/x-www-form-urlencoded
Longitud del contenido: longitud
nombre de usuario = cadena y contraseña = cadena
Construir solicitud POST:
<%
url = " http://192.100.100.81/WebService1/UserSignOn.asmx/LoginByAccount "
SoapRequest="nombre de usuario="&nombre de usuario&"&contraseña="&contraseña
Establecer xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Abrir "POST",url,falso
xmlhttp.setRequestHeader "Tipo de contenido", "aplicación/x-www-form-urlencoded"'Nota
xmlhttp.setRequestHeader "HOST", "192.100.100.81"
xmlhttp.setRequestHeader "Contenido-Longitud", LEN (SoapRequest)
xmlhttp.Send (SoapRequest)
'Esto envía con éxito una solicitud POST que coincide con el ejemplo HTTP POST usando XMLHTTP.
'Comprueba si es exitoso:
Respuesta.Escribir xmlhttp.Estado&” ”
Respuesta.Escribir xmlhttp.StatusText
Establecer xmlhttp = Nada
%>
Si tiene éxito, se mostrará 200 ok. Si no se logra, se mostrará 500 Error de conexión interna del servidor: mantener activo.
Después del éxito, puede utilizar la respuesta de WEBSERVICE de la siguiente manera:
ENVÍO HTTP
A continuación se muestra un ejemplo de respuesta HTTP POST. Los marcadores de posición que se muestran deben reemplazarse por valores reales.
HTTP/1.1 200 correcto
Tipo de contenido: texto/xml; charset=utf-8
Longitud del contenido: longitud
<?xml versión="1.0" codificación="utf-8"?>
<cadena xmlns=" http://tempuri.org/">cadena</cadena >
espectáculo:
Si xmlhttp.Status = 200, entonces
establezca xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
showallnode "cadena", xmlDOC'call SHOWALLNODE
Establecer xmlDOC = nada
más
Respuesta.Escribir xmlhttp.Status&" "
Respuesta.Escribir xmlhttp.StatusText
Fin si
El anterior es el método para que ASP utilice el componente XMLHTTP para enviar solicitudes SOAP y llamar a WEBSERVICE. Recomiendo usar el primer método en el entorno ASP. Si existe un método mejor, comuníquese conmigo por correo electrónico: [email protected] . Método HTTP GET Habrá problemas con el chino y la cantidad de datos no es grande. Usar el método HTTP POST parece superfluo. De hecho, el ejemplo anterior usa el método POST, pero no es una solicitud POST. Para utilizar SOAP TOOLKIT, necesita instalar el software y no existe una versión posterior. ---Fin del texto completo