Quel code VBA est requis pour effectuer un HTTP POST à partir d'une feuille de calcul Excel?
135
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("")
Sinon, pour un meilleur contrôle sur la requête HTTP, vous pouvez utiliser WinHttp.WinHttpRequest.5.1
à la place de MSXML2.ServerXMLHTTP
.
objHTTP.responseText
.ByRef
ou non. C'est pourquoi leur utilisation avec des variables d'objet d'un type qui n'a pas de membre par défaut provoque des erreurs d'exécution; et de les utiliser sur un objet qui fait un membre par défaut, la valeur passe de ce membre par défaut au lieu de l'objet réel.Si vous en avez besoin pour fonctionner à la fois sur Mac et Windows, vous pouvez utiliser QueryTables:
Remarques:
Pour plus de détails, vous pouvez consulter mon résumé complet sur «l' utilisation des services Web d'Excel ».
la source
En plus de la réponse de Bill the Lizard :
La plupart des backends analysent les données de publication brutes. En PHP par exemple, vous aurez un tableau
$_POST
dans lequel des variables individuelles dans les 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"
:Sinon, vous devez lire les données de publication brutes sur la variable
"$HTTP_RAW_POST_DATA"
.la source
Vous pouvez utiliser
ServerXMLHTTP
dans un projet VBA en ajoutant une référence àMSXML
.(à partir du référencement MSXML dans les projets VBA )
La documentation MSDN ServerXMLHTTP contient des détails complets sur toutes les propriétés et méthodes de ServerXMLHTTP.
En bref, cela fonctionne essentiellement comme ceci:
la source
Pour compléter la réponse des autres utilisateurs:
Pour cela, j'ai créé un objet "WinHttp.WinHttpRequest.5.1" .
Envoyez une demande de publication avec des données d'Excel en utilisant VBA:
Envoyez une demande d'obtention avec l'authentification par jeton d'Excel à l'aide de VBA:
la source
TCRequestItem Object
, vous pouvez la lire comme:TCRequestItem.ResponseText
après l'avoir faitTCRequestItem.send
Je l'ai fait avant d'utiliser la bibliothèque MSXML, puis d'utiliser l'objet XMLHttpRequest, voir ici .
la source