El código siguiente funciona. Pero si me comente la línea Dim objRequest As MSXML2.XMLHTTP
y elimine la línea Dim objRequest As Object
falla con el mensaje de error:El método de envío MSXML2.XMLHTTP funciona con el enlace anticipado, falla con el enlace tardío
el parámetro es incorrecto
Por qué, y lo que (si acaso) puedo hacer al respecto?
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, sí, sé que tendría que hacer que para que el código para trabajar sin una referencia a la biblioteca de tipos MSXML. Ese no es el problema aquí. El código falla cuando se utiliza Dim objRequest As Object
independientemente de si utilizo
Set objRequest = NEW MSXML2.XMLHTTP
con la referencia, o
Set objRequest = CreateObject("MSXML2.XMLHTTP")
sin la referencia.
¡Yay! Gracias, Tomalak, ¡eso lo solucionó! :) –
Muy extraño que la solución fue agregar paratensis a '.send (strPostData)'. Pero acabo de confirmar que realmente es el caso. –
@ Bruno: gracias por la confirmación. Estoy convencido de que hay una explicación completamente lógica para esto, en algún lugar en las entrañas de la interacción VBA o VBA-a-COM en general o la biblioteca MSXML2.XMLHTTP en particular, pero no tengo ni idea. Estoy seguro de que @Eric Lippert podría explicarlo. ;) – Tomalak