----ÍNDICE----
1. Método de solicitação de sabonete
2. Método de pós-solicitação
3. Função SHOWALLNODE (sobre atributos do nó e exibição de dados)
--------------------------
um. Exemplo de solicitação SOAP Abaixo está um exemplo de solicitação SOAP. Os espaços reservados mostrados precisam ser substituídos por valores reais.
POST /WebService1/UserSignOn.asmx HTTP/1.1
Anfitrião: 192.100.100.81
Tipo de conteúdo: text/xml charset=utf-8;
Comprimento do conteúdo: comprimento
SOAPAction: " http://tempuri.org/LoginByAccount "
<?xml version="1.0" encoding="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/ ">
<sabão:Corpo>
<LoginByAccount xmlns=" http://tempuri.org/ ">
<nomedeusuário>string</nomedeusuário>
<senha>string</senha>
</LoginByAccount>
</soap:corpo>
</soap:Envelope>
Para interagir com WEBSERVICE, você precisa construir uma solicitação SOAP exatamente igual à acima:
<%
url = " http://192.100.100.81/WebService1/UserSignOn.asmx "
SoapRequest="<?xml version="&CHR(34)&"1.0"&CHR(34)&" encoding="&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 )&">"& _
"<nome de usuário>"&nome de usuário&"</nome de usuário>"& _
"<senha>"&senha&"</senha>"& _
"</LoginByAccount>"& _
"</soap:Body>"& _
"</soap:Envelope>"
Definir xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Open "POST",url,falso
xmlhttp.setRequestHeader "Tipo de conteúdo", "text/xml;charset=utf-8"
xmlhttp.setRequestHeader "HOST","192.100.100.81"
xmlhttp.setRequestHeader "Comprimento do conteúdo",LEN(SoapRequest)
xmlhttp.setRequestHeader "SOAPAction", " http://tempuri.org/LoginByAccount " 'Deve ser o mesmo namespace que WEBSERVICE, caso contrário o serviço será rejeitado
xmlhttp.Send(SoapRequest)
'Isso envia com êxito uma solicitação SOAP que corresponde ao exemplo SOAP usando XMLHTTP.
'Verifique se foi bem-sucedido:
Response.Write xmlhttp.Status&” ”
Response.Write xmlhttp.StatusText
Definir xmlhttp = Nada
%>
Se for bem-sucedido, 200 ok será exibido. Se não tiver êxito, será exibido 500 Erro Interno do Servidor: keep-alive.
Após sucesso, você pode utilizar a resposta do WEBSERVICE, da seguinte forma:
Exemplo de resposta SOAP Abaixo está um exemplo de resposta SOAP. Os espaços reservados mostrados precisam ser substituídos por valores reais.
HTTP/1.1 200 OK
Tipo de conteúdo: text/xml charset=utf-8;
Comprimento do conteúdo: comprimento
<?xml version="1.0" encoding="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/ ">
<sabão:Corpo>
<LoginByAccountResponse xmlns=" http://tempuri.org/ ">
<LoginByAccountResult>string</LoginByAccountResult>
</LoginByAccountResponse>
</soap:corpo>
</soap:Envelope>
Este é o exemplo de resposta SOAP correspondente ao exemplo de solicitação SOAP agora. Depois que a solicitação for enviada com sucesso, você poderá visualizar a resposta:
Se xmlhttp.Status = 200, então
defina xmlDOC =server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
xmlStr=xmlDOC.xml
Definir xmlDOC = nada
xmlStr = Substituir(xmlStr,"<","<")
xmlStr = Substituir(xmlStr,">",">")
Resposta.write xmlStr
Caso contrário,
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
Fim se
Se a solicitação estiver correta, será dada uma resposta completa. Se a solicitação estiver incorreta (por exemplo, o número da conta e a senha estão incorretos), o conteúdo da resposta estará incompleto.
Obtenha os dados na resposta da seguinte maneira:
Se xmlhttp.Status = 200 Então
defina xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
Response.Write xmlDOC.documentElement.selectNodes("//LoginByAccountResult")(0).text 'Exibe os dados onde o nó é LoginByAccountResult (se estiver codificado, deve ser decodificado)
Definir xmlDOC = nada
Else
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End if
exibe a FUNÇÃO de cada atributo e dados de um nó:
Function showallnode(rootname,myxmlDOC)' Espero que todos continuem a concluí-lo 2005-1-9 escrito por 844.
if rootname<>"" then
set nodeobj=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"")'Objeto do nó atual
nodeAttributelen=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"").attributes.length'O número atual de atributos do nó
returnstring=returnstring&"<BR>Nome do nó: "&rootname
if nodeobj.text<>"" então
returnstring=returnstring&"<BR>O texto do nó: ("&nodeobj.text&")"
fim se
returnstring=returnstring&"<BR>{<BR>"
se nodeAttributelen<>0 então
returnstring=returnstring&"<BR>Existem atributos "&nodeAttributelen&", que são: "
fim se
for i=0 para nodeAttributelen-1
returnstring=returnstring&"<li>"&nodeobj.attributes(i).Name&": "&nodeobj.getAttribute(nodeobj.attributes(i).Name)&" </li>"
próximo
se nodeobj.childNodes.Length<>0 então
se nodeobj.hasChildNodes() e lcase(nodeobj.childNodes.item(0).nodeName)<>"#text" então'se existem nós filhos
definir childnodeobj=nodeobj.childNodes
childnodelen=nodeobj.childNodes.Length
returnstring=returnstring&"<BR><BR>Existem nós filhos "&childnodelen&";<BR>Eles são: "
para i = 0 para childnodelen-1
returnstring=returnstring&"<li>"&childnodeobj.item(i).nodeName&"</li>"
próximo
terminar se
fim se
returnstring=returnstring&"<BR>}<BR>"
resposta.write string de retorno
definir nodeobj = nada
terminar se
Função final
Pode ser usado assim:
Se xmlhttp.Status = 200 Então
defina xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
showallnode "LoginByAccountResponse",xmlDOC'Call SHOWALLNODE
Definir xmlDOC = nada
Else
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
Fim se
2. Exemplo de solicitação POST
POSTAGEM HTTP
Abaixo está um exemplo de solicitação HTTP POST. Os espaços reservados mostrados precisam ser substituídos por valores reais.
POST /WebService1/UserSignOn.asmx/LoginByAccount HTTP/1.1
Anfitrião: 192.100.100.81
Tipo de conteúdo: aplicativo/x-www-form-urlencoded
Comprimento do conteúdo: comprimento
nomedeusuario=string&password=string
Construir solicitação POST:
<%
url = " http://192.100.100.81/WebService1/UserSignOn.asmx/LoginByAccount "
SoapRequest="username="&username&"&password="&password
Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Open "POST",url,falso
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"'Nota
xmlhttp.setRequestHeader "HOST","192.100.100.81"
xmlhttp.setRequestHeader "Comprimento do conteúdo",LEN(SoapRequest)
xmlhttp.Send(SoapRequest)
'Isso envia com êxito uma solicitação POST que corresponde ao exemplo HTTP POST usando XMLHTTP.
'Verifique se foi bem sucedido:
Response.Write xmlhttp.Status&” ”
Response.Write xmlhttp.StatusText
Definir xmlhttp = Nada
%>
Se for bem-sucedido, 200 ok será exibido. Se não tiver êxito, será exibido 500 Erro Interno do Servidor: keep-alive.
Após sucesso, você pode utilizar a resposta do WEBSERVICE, da seguinte forma:
POSTAGEM HTTP
Abaixo está um exemplo de resposta HTTP POST. Os espaços reservados mostrados precisam ser substituídos por valores reais.
HTTP/1.1 200 OK
Tipo de conteúdo: text/xml charset=utf-8;
Comprimento do conteúdo: comprimento
<?xml version="1.0" encoding="utf-8"?>
<string xmlns=" http://tempuri.org/">string</string >
mostrar:
Se xmlhttp.Status = 200 Então
defina xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
showallnode "string",xmlDOC'call SHOWALLNODE
Definir xmlDOC = nada
Else
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
Fim se
O método acima é o método para o ASP usar o componente XMLHTTP para enviar solicitação SOAP e chamar WEBSERVICE. Recomendo usar o primeiro método no ambiente ASP. Se houver um método melhor, entre em contato comigo pelo email: [email protected] . Método HTTP GET Haverá problemas com o chinês e a quantidade de dados não é grande. Usar o método HTTP POST parece supérfluo. Na verdade, o exemplo acima usa o método POST, mas não é uma solicitação POST. Para usar o SOAP TOOLKIT, você precisa instalar o software e não existe uma versão sucessora. ---Fim do texto completo