Quel code VBA est requis pour effectuer un HTTP POST à partir d'un tableur Excel?
_Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send("")
_
Vous pouvez également utiliser WinHttp.WinHttpRequest.5.1
à la place de MSXML2.ServerXMLHTTP
pour un meilleur contrôle de la requête HTTP.
Si vous en avez besoin pour fonctionner sur Mac et Windows, vous pouvez utiliser QueryTables:
With ActiveSheet.QueryTables.Add(Connection:="URL;http://carbon.brighterplanet.com/flights.txt", Destination:=Range("A2"))
.PostText = "Origin_airport=MSN&destination_airport=ORD"
.RefreshStyle = xlOverwriteCells
.SaveData = True
.Refresh
End With
Remarques:
Pour plus de détails, vous pouvez consulter mon résumé complet sur " en utilisant les services Web d'Excel ".
En plus de la réponse de Bill the Lizard :
La plupart des serveurs analysent les données de publication brutes. Dans PHP par exemple, vous aurez un tableau $_POST
dans lequel les variables individuelles des données de publication seront stockées. Dans ce cas, vous devez utiliser un en-tête supplémentaire "Content-type: application/x-www-form-urlencoded"
:
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("var1=value1&var2=value2&var3=value3")
Sinon, vous devez lire les données de publication brutes sur la variable "$HTTP_RAW_POST_DATA"
.
Vous pouvez utiliser ServerXMLHTTP
dans un projet VBA en ajoutant une référence à MSXML
.
- Ouvrez l'éditeur VBA (généralement en modifiant une macro)
- Aller à la liste des références disponibles
- Vérifier Microsoft XML
- Cliquez sur OK.
(de référençant MSXML dans les projets VBA )
Le documentation ServerXMLHTTP MSDN contient des informations complètes sur toutes les propriétés et méthodes de ServerXMLHTTP.
En bref, cela fonctionne fondamentalement comme ceci:
- Call open méthode pour se connecter au serveur distant
- Appelez send pour envoyer la demande.
- Lire la réponse via responseXML , responseText , responseStream ou responseBody
Je l'ai fait avant d'utiliser la bibliothèque MSXML, puis à l'aide de l'objet XMLHttpRequest. Voir http://scriptorium.serve-it.nl/view.php?sid=4