The code below works. But if I comment out the line Dim objRequest As MSXML2.XMLHTTP and uncomment the line Dim objRequest As Object it fails with the error message :
The parameter is incorrect
Why, and what (if anything) can I do about it?
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, yes, I know I would have to do that in order for my code to work without a reference to the MSXML type library. That’s not the issue here. The code fails when using Dim objRequest As Object regardless of whether I use
Set objRequest = NEW MSXML2.XMLHTTP with the reference, or
Set objRequest = CreateObject('MSXML2.XMLHTTP') without the reference.
For some reason, this works:
Instead of building the URL-encoded
strPostDatavia string concatenation, it’s strongly advisable to use a URL encoding function:A couple of choices for a
URLEncode()function in VBA are in this thread: How can I URL encode a string in Excel VBA?