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.

Set Objet_XML = Objet_HttpRequest.responseXML
Les Propriétés
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.
Les Méthodes
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.
Exemple [voir]
<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>");
  }
%>