----INDICE----
1. méthode de demande de savon
2. méthode de demande de publication
3. Fonction SHOWALLNODE (à propos des attributs du nœud et de l'affichage des données)
--------------------------
un. Exemple de requête SOAP Vous trouverez ci-dessous un exemple de requête SOAP. Les espaces réservés affichés doivent être remplacés par des valeurs réelles.
POST /WebService1/UserSignOn.asmx HTTP/1.1
Hôte : 192.100.100.81
Type de contenu : text/xml ; charset=utf-8
Longueur du contenu : longueur
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/ ">
<savon:Corps>
<LoginByAccount xmlns=" http://tempuri.org/ ">
<nom d'utilisateur>chaîne</nom d'utilisateur>
<mot de passe>chaîne</mot de passe>
</ConnexionParCompte>
</soap:Corps>
</soap:Enveloppe>
Afin d'interagir avec WEBSERVICE, vous devez construire une requête SOAP exactement comme ci-dessus :
<%
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 )&">"& _
"<nom d'utilisateur>"&nom d'utilisateur&"</nom d'utilisateur>"& _
"<mot de passe>"&mot de passe&"</mot de passe>"& _
"</LoginByAccount>"& _
"</soap:Body>"& _
"</soap:Envelope>"
Définir xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Ouvrir "POST",url,false
xmlhttp.setRequestHeader "Content-Type", "text/xml;charset=utf-8"
xmlhttp.setRequestHeader "HÔTE", "192.100.100.81"
xmlhttp.setRequestHeader "Content-Length", LEN (SoapRequest)
xmlhttp.setRequestHeader "SOAPAction", " http://tempuri.org/LoginByAccount " 'Doit être le même espace de noms que WEBSERVICE, sinon le service sera rejeté
xmlhttp.Send(SoapRequest)
'Cela envoie avec succès une requête SOAP qui correspond à l'exemple SOAP en utilisant XMLHTTP.
'Vérifiez si l'opération a réussi :
Response.Write xmlhttp.Status&” ”
Réponse.Write xmlhttp.StatusText
Définir xmlhttp = Rien
%>
En cas de succès, 200 ok s'affichera. En cas d'échec, 500 Erreur de serveur interne s'affichera.
Après succès, vous pouvez utiliser la réponse de WEBSERVICE, comme suit :
Exemple de réponse SOAP Vous trouverez ci-dessous un exemple de réponse SOAP. Les espaces réservés affichés doivent être remplacés par des valeurs réelles.
HTTP/1.1 200 OK
Type de contenu : text/xml ; charset=utf-8
Contenu-Longueur : longueur
<?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/ ">
<savon:Corps>
<LoginByAccountResponse xmlns=" http://tempuri.org/ ">
<LoginByAccountResult>chaîne</LoginByAccountResult>
</LoginByAccountResponse>
</soap:Corps>
</soap:Enveloppe>
Il s'agit de l'exemple de réponse SOAP correspondant à l'exemple de requête SOAP du moment. Une fois la requête envoyée avec succès, vous pouvez afficher la réponse :
Si xmlhttp.Status = 200 Alors
définissez xmlDOC =server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
xmlStr = xmlDOC.xml
Définir xmlDOC = rien
xmlStr = Remplacer(xmlStr,"<","<")
xmlStr = Remplacer(xmlStr,">",">")
Réponse.write xmlStr
Sinon
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
Fin si
Si la demande est correcte, une réponse complète sera donnée. Si la demande est incorrecte (par exemple, le numéro de compte et le mot de passe sont incorrects), le contenu de la réponse sera incomplet.
Obtenez les données dans la réponse comme suit :
Si xmlhttp.Status = 200 Alors
définissez xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
Response.Write xmlDOC.documentElement.selectNodes("//LoginByAccountResult") (0).text 'Afficher les données où se trouve le nœud LoginByAccountResult (s'il est encodé, il doit être décodé)
Définir xmlDOC = rien
d'autre
Response.Write xmlhttp.Status&" "
Réponse.Write xmlhttp.StatusText
End if
affiche la FONCTION de chaque attribut et données d'un nœud :
Function showallnode(rootname,myxmlDOC)' J'espère que tout le monde continuera à le compléter 2005-1-9 écrit par 844.
si rootname<>"" alors
définissez nodeobj=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"")'Objet de nœud actuel
nodeAttributelen=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"").attributes.length'Le nombre actuel d'attributs de nœud
returnstring=returnstring&"<BR>Nom du nœud : "&rootname
if nodeobj.text<>"" then
returnstring=returnstring&"<BR>Le texte du nœud : ("&nodeobj.text&")"
fin si
returnstring=returnstring&"<BR>{<BR>"
si nodeAttributelen<>0 alors
returnstring=returnstring&"<BR>Il existe "&nodeAttributelen&" des attributs qui sont : "
terminer si
pour i=0 à nodeAttributelen-1
returnstring=returnstring&"<li>"&nodeobj.attributes(i).Name&": "&nodeobj.getAttribute(nodeobj.attributes(i).Name)&" </li>"
suivant
si nodeobj.childNodes.Length<>0 alors
si nodeobj.hasChildNodes() et lcase(nodeobj.childNodes.item(0).nodeName)<>"#text" alors s'il y a des nœuds enfants
définir childnodeobj=nodeobj.childNodes
childnodelen=nodeobj.childNodes.Length
returnstring=returnstring&"<BR><BR>Il existe des nœuds enfants "&childnodelen&";<BR>Ils sont : "
pour i=0 à childnodelen-1
returnstring=returnstring&"<li>"&childnodeobj.item(i).nodeName&"</li>"
suivant
finir si
fin si
returnstring=returnstring&"<BR>}<BR>"
réponse.write chaîne de retour
définir nodeobj = rien
finir si
Fonction de fin
Il peut être utilisé comme ceci :
Si xmlhttp.Status = 200 Alors
définissez xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
showallnode "LoginByAccountResponse", xmlDOC'Call SHOWALLNODE
Définir xmlDOC = rien
d'autre
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
Fin si
2. Exemple de requête POST
POST HTTP
Vous trouverez ci-dessous un exemple de requête HTTP POST. Les espaces réservés affichés doivent être remplacés par des valeurs réelles.
POST /WebService1/UserSignOn.asmx/LoginByAccount HTTP/1.1
Hôte : 192.100.100.81
Type de contenu : application/x-www-form-urlencoded
Contenu-Longueur : longueur
nom d'utilisateur=chaîne&mot de passe=chaîne
Construire la requête POST :
<%
url = " http://192.100.100.81/WebService1/UserSignOn.asmx/LoginByAccount "
SoapRequest="username="&username&"&password="&password
Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Ouvrir "POST",url,false
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"'Remarque
xmlhttp.setRequestHeader "HÔTE", "192.100.100.81"
xmlhttp.setRequestHeader "Content-Length", LEN (SoapRequest)
xmlhttp.Send (SoapRequest)
'Cela envoie avec succès une requête POST qui correspond à l'exemple HTTP POST utilisant XMLHTTP.
'Vérifiez si l'opération a réussi :
Response.Write xmlhttp.Status&” ”
Réponse.Write xmlhttp.StatusText
Définir xmlhttp = Rien
%>
En cas de succès, 200 ok s'affichera. En cas d'échec, 500 Erreur de serveur interne s'affichera.
Après succès, vous pouvez utiliser la réponse de WEBSERVICE, comme suit :
POST HTTP
Vous trouverez ci-dessous un exemple de réponse HTTP POST. Les espaces réservés affichés doivent être remplacés par des valeurs réelles.
HTTP/1.1 200 OK
Type de contenu : text/xml ; charset=utf-8
Contenu-Longueur : longueur
<?xml version="1.0" encoding="utf-8"?>
<string xmlns=" http://tempuri.org/">chaîne</string >
montrer:
Si xmlhttp.Status = 200 Alors
définissez xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
showallnode "chaîne", xmlDOC'call SHOWALLNODE
Définir xmlDOC = rien
d'autre
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
Fin si
La méthode ci-dessus permet à ASP d'utiliser le composant XMLHTTP pour envoyer une requête SOAP et appeler WEBSERVICE. Je recommande d'utiliser la première méthode dans l'environnement ASP. S'il existe une meilleure méthode, veuillez me contacter par courrier électronique : [email protected] . Méthode HTTP GET Il y aura des problèmes avec le chinois et la quantité de données n'est pas importante. L'utilisation de la méthode HTTP POST semble superflue. En fait, l'exemple ci-dessus utilise la méthode POST, mais il ne s'agit pas d'une requête POST. Pour utiliser SOAP TOOLKIT, vous devez installer un logiciel et il n'existe pas de version successeur. ---Fin du texte intégral