MSXML2.XMLHTTP envoyer méthode fonctionne avec la liaison anticipée, ne parvient pas à liaison tardive
Le code ci-dessous fonctionne. Mais si je commente la ligne Dim objRequest As MSXML2.XMLHTTP
et décommentez la ligne Dim objRequest As Object
il échoue avec le message d'erreur :
Le paramètre est incorrect
Pourquoi, et ce que (le cas échéant) puis-je faire à ce sujet?
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 une référence à la MSXML bibliothèque de type. Ce n'est pas la question ici. Le code ne fonctionne pas lors de l'utilisation de 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 la référence.
OriginalL'auteur Brendan Reynolds | 2008-11-21
Vous devez vous connecter pour publier un commentaire.
Pour une raison quelconque, cela fonctionne:
Au lieu de construire l'URL-encodé
strPostData
par la concaténation de chaîne, c'est fortement conseillé d'utiliser une URL en fonction d'encodage:Un couple de choix pour un
URLEncode()
fonction en VBA sont dans ce fil: Comment puis-je encoder une chaîne de caractères dans Excel VBA?Très étrange que la solution était d'ajouter parathensis à
.send (strPostData)
. Mais je confirme que c'est vraiment le cas.L'ajout de parenthèses autour de
strPostData
l'oblige à être passés Par Valeur. Je suppose que vous ne faites cela que si vous avez besoin de "protéger" votre local de la variable peut être modifiée par la procédure appelée. Je ne suis pas sûr pourquoi, la méthode elle-même se comporte différemment. Pour plus d'infos, voir ici: stackoverflow.com/questions/1070863/...+1 Juste a présente aujourd'hui et il a résolu mon problème 🙂
Je me sens incroyablement chanceux d'avoir trouvé cette. Je dois avouer que je n'aurais probablement pas deviné ou essayé! Surtout en raison de l'erreur que j'ai eu était undebuggable: il s'est juste arrêté à Envoyer avec des paramètres valides et dit qu'il a échoué. Ouf!
OriginalL'auteur Tomalak
Si vous utilisez le Dim objRequest Comme Objet, alors vous auriez besoin de code:
Ensemble objRequest = CreateObject("MSXML2.XMLHTTP")
OriginalL'auteur Corey Trager
Je sais que c'est à peu près identique au code de Tomalek ci-dessus (tout le crédit en raison de vous!), mais cette question m'a aidé à devenir une véritable solution à un problème que j'ai eu (Excel soumettre à PHP serveur, puis traiter avec réponse)...donc dans le cas où cela est d'une aide quelconque à quelqu'un d'autre:
OriginalL'auteur Alistair Collins