Le code ci-dessous fonctionne. Mais si je commente la ligne Dim objRequest As MSXML2.XMLHTTP
et décommenter la ligne Dim objRequest As Object
il échoue avec le message d'erreur:La méthode d'envoi MSXML2.XMLHTTP fonctionne avec une liaison anticipée, échoue avec une liaison tardive
Le paramètre est incorrect
Pourquoi, et ce que (le cas échéant) puis-je faire?
Public Function GetSessionId(strApiId, strUserName, strPassword) As String
Dim strPostData As String
Dim objRequest As MSXML2.XMLHTTP
'Dim objRequest As Object '
strPostData = "api_id=" & strApiId & "&user=" & strUserName & "&password=" & strPassword
Set objRequest = New MSXML2.XMLHTTP
With objRequest
.Open "POST", "https://api.clickatell.com/http/auth", False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.send strPostData
GetSessionId = .responseText
End With
End Function
Corey, oui, je sais que je dois faire pour que mon code fonctionne sans référence à la bibliothèque de type MSXML. Ce n'est pas le problème ici. Le code échoue lorsque vous utilisez Dim objRequest As Object
indépendamment du fait que j'utilise
Set objRequest = NEW MSXML2.XMLHTTP
avec la référence ou
Set objRequest = CreateObject("MSXML2.XMLHTTP")
sans référence.
Yay! Merci, Tomalak, qui l'a réparé! :) –
Très étrange que la solution était d'ajouter parathensis à '.send (strPostData)'. Mais je viens de confirmer que c'est vraiment le cas. –
@Bruno: Merci pour la confirmation. Je suis convaincu qu'il y a une explication tout à fait logique à cela, quelque part dans les entrailles de l'interaction VBA ou VBA-to-COM en général ou de la bibliothèque MSXML2.XMLHTTP en particulier, mais je n'en ai aucune idée. Je suis sûr que @Eric Lippert pourrait expliquer. ;) – Tomalak