L'objet IXMLHTTPRequest fournit le support de protocole côté client pour les communications avec les seveurs HTTP.
Set Objet_HTTPRequest = Server.CreateObject("Msxml2.XMLHTTP") |
Un ordinateur client peut utiliser l'objet XMLHTTP (MSXML2.XMLHTTP) pour envoyer une requête HTTP arbitraire, recevoir la réponse, et obtenir la réponse de l'analyse du DOM XML de Microsoft.
Cette objet est intégré à l'analyseur de Microsoft XML (MSXML) pour supporter l'envoi du corps de la requête directement à partir des objets DOM de MSXML et analysant la réponse directement à l'intérieur de ces derniers. Lorsque combiné avec le support pour les feuilles de style XSL, l'objet XMLHTTP fournit un moyen simple pour envoyer des requêtes structurées vers les serveurs HTTP et affiche le résultat avec une variété de présentations.
La séquence usuelle commence par l'appel de la méthode open permettant l'ouverture de l'objet IXMLHTTPRequest.
Objet_HttpRequest.open _ "GET", "http://serveur-distant/page.asp", false
Puis une information d'entête habituelle est fixée à l'objet, par l'intermédiaire de la méthode setRequestHeader.
Objet_HttpRequest.setRequestHeader Variable_HTTP, Valeur
Ensuite, l'objet est envoyé au serveur distant par la méthode send. La réponse retournée par le serveur peut être immédiatement retournée si la propriété async est égale à true. Si la valeur de cette dernière est false, la réponse est retournée lorsqu'elle a été entièrement réceptionnée.
ilot_donne.async = false Objet_HttpRequest.send ilot_donnee.XMLDocument
Enfin, il est possible de vérifier la réponse par l'une des quatres propriétés suivantes : responseBody, responseStream, responseText, responseXML.
Les PropriétésSet Objet_XML = Objet_HttpRequest.responseXML
Propriété |
---|
Description |
Objet_HttpRequest.onreadystatechange = Gestionnaire_Evénement |
indique le getionnaire d'événements pour être appelé lorsque la propriété readyState change, en lecture et écriture. |
Etat = Objet_HttpRequest.readyState |
représente l'état de la requête, en lecture seule. |
Chaîne = Objet_HttpRequest.responseBody |
représente le corps de l'entité de réponse commun tableau d'octets non-signés, en lecture seule. |
Stream = Objet_HttpRequest.responseStream |
représente le corps de l'entité de réponse comme un flux de données textuelles, en lecture seule. |
Texte = Objet_HttpRequest.responseText |
représente le corps de l'entité de réponse comme une chaîne de caractères, en lecture seule. |
Set Objet_XML = Objet_HttpRequest.responseXML |
représente le corps de l'entité de réponse comme analysé par l'analyseur de Microsoft MSXML, en lecture seule. |
Valeur = Objet_HttpRequest.status |
représente le code du statut HTTP retourné par une requête, en lecture seule. |
Chaîne = Objet_HttpRequest.statusText |
représente le statut de la ligne de réponse HTTP, en lecture seule. |
Méthode |
---|
Description |
Objet_HttpRequest.abort() |
annule la requête HTTP courante. |
Chaîne = Objet_HttpRequest.getAllResponseHeaders() |
récupère les valeurs de tous les entêtes HTTP. |
Chaîne = Objet_HttpRequest.getResponseHeader(Nom_Entête) |
récupère la valeur d'un entête HTTP à partir du corps de la réponse. |
Objet_HttpRequest.open({GET | POST | PUT | PROPFIND}, URL_Requête [, Bool_Async, Nom_Utilisateur, Mot_Passe]) |
initialise une requête MSXML2.XMLHTTP, et spécifie la méthode, l'adresse URL et les informations d'authentification pour la requête. |
Objet_HttpRequest.send([Nom_Corps]) |
envoie une requête HTTP vers le serveur et reçoit une réponse. |
Objet_HttpRequest.setRequestHeader(Nom_Entête) |
spécifie le nom d'un entête HTTP. |
<html> <body onload="return insere_pi()"> <XML id="ilot_donnee"> <personne> <nom></nom> <prenom></prenom> <adresse></adresse> <code_postal></code_postal> <ville></ville> </personne> </XML> <table border="0" align="center"> <tr> <th align="left">Nom</th> <td>: <input type="text" name="snom" size="20"/></td> </tr> <tr> <th align="left">Prénom</th> <td>: <input type="text" name="sprenom" size="20"/></td> </tr> <tr> <th align="left">Adresse</th> <td>: <input type="text" name="sadresse" size="20"/></td> </tr> <tr> <th align="left">Code Postal</th> <td>: <input type="text" name="scode_postal" size="6"/></td> </tr> <tr> <th align="left">Ville</th> <td>: <input type="text" name="sville" size="20"/></td> </tr> <tr> <th colspan="2"> <input type="submit" value="Soumission" onclick="envoi()"/> <input type="reset" value="Annulation"/> </td> </tr> </table> <script language="VBScript" type="text/vbscript"> Function insere_pi() Set obj_pi = _ ilot_donnee.createProcessingInstruction _ ("xml", "version='1.0' encoding='iso-8859-1'") ilot_donnee.insertBefore obj_pi, ilot_donnee.firstChild End Function Function envoi() If Not IsNull(snom.value) _ AND Not IsNull(sprenom.value) _ AND Not IsNull(sadresse.value) _ AND IsNumeric(scode_postal.value) _ AND Not IsNull(sville.value) Then ilot_donnee.documentElement.getElementsByTagName _ ("nom").item(0).text = snom.value ilot_donnee.documentElement.getElementsByTagName _ ("prenom").item(0).text = sprenom.value ilot_donnee.documentElement.getElementsByTagName _ ("adresse").item(0).text = sadresse.value ilot_donnee.documentElement.getElementsByTagName _ ("code_postal").item(0).text = scode_postal.value ilot_donnee.documentElement.getElementsByTagName _ ("ville").item(0).text = sville.value Dim Objet_HttpRequest Set Objet_HttpRequest = CreateObject("MSXML2.XMLHTTP") Objet_HttpRequest.open "GET", "http://serveur-distant/reponse.asp", false Dim agent agent = "Mozilla/4.0 (compatible; MSIE 6.0; " _ & "Windows NT 5.0; .NET CLR 1.0.2914)" Objet_HttpRequest.setRequestHeader "User-Agent", agent ilot_donnee.async = false Objet_HttpRequest.send ilot_donnee.XMLDocument msgBox("responseText : " & Objet_HttpRequest.responseText _ & vbCrLf & "statusText : " _ & Objet_HttpRequest.statusText & vbCrLf_ & "getAllResponseHeaders : " _ & Objet_HttpRequest.getAllResponseHeaders()) Else msgBox("Les informations fournies sont invalides !") End If End Function </script> </body> </html> Fichier : reponse.asp <%@ language=jscript %> <% Response.Expires = -1000; var Objet_Document = Server.CreateObject("MSXML2.DOMDocument"); var dom_resultat = Server.CreateObject("MSXML2.DOMDocument"); Objet_Document.async = false; Objet_Document.load(Request); var agent = "Mozilla/4.0" var Agent_Utilisateur = Request.ServerVariables("HTTP_User_Agent"); var chaine = Objet_Document.documentElement.childNodes.item(0).text; Response.ContentType = "text/xml"; if(Agent_Utilisateur.test(agent)) { dom_resultat.loadXML("<resultat>" + chaine +" </resultat>"); var obj_pi = dom_resultat.createProcessingInstruction("xml", "version='1.0' encoding='iso-8859-1'"); dom_resultat.insertBefore(obj_pi, dom_resultat.firstChild); dom_resultat.save(Response); } else { Response.Write("<h3>Données récupérées pour ajout sont :</h3>" + "<p>" + chaine + " </p>"); } %> |