Poniższy kod działa. Ale jeśli mogę wypowiedzieć się linię Dim objRequest As MSXML2.XMLHTTP
i usuń linię Dim objRequest As Object
nie powiedzie się z komunikatem o błędzie:Metoda wysyłania MSXML2.XMLHTTP działa z wczesnym wiązaniem, nie działa z późnym wiązaniem
Parametr jest niepoprawny
Dlaczego i co (jeśli cokolwiek) mogę z tym zrobić?
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, tak, wiem, że muszę to zrobić, aby mój kod do pracy bez odniesienia do typu biblioteki MSXML. To nie jest problem tutaj. Kod awarii podczas korzystania Dim objRequest As Object
niezależnie od tego, czy używam
Set objRequest = NEW MSXML2.XMLHTTP
z odniesieniem lub
Set objRequest = CreateObject("MSXML2.XMLHTTP")
bez odniesienia.
Yay! Dziękuję, Tomalak, że to naprawiłem! :) –
Bardzo dziwne, że rozwiązaniem było dodanie parathensis do '.send (strPostData)'. Ale właśnie potwierdziłem, że tak jest naprawdę. –
@Bruno: Dzięki za potwierdzenie. Jestem przekonany, że istnieje całkowicie logiczne wytłumaczenie tego, gdzieś w głębi VBA, w ogóle interakcji VBA-do-COM lub w szczególności z biblioteką MSXML2.XMLHTTP, ale nie mam pojęcia. Jestem pewien, że @Eric Lippert mógłby wyjaśnić. ;) – Tomalak