I'm typically a LAMP stack developer, so I'm a little out of my element on this one. I'm working on a classic ASP site that is doing a SOAP based XML API connection. It's worked in the past, but now we're updating the API to connect to a different application. Problem is, I'm not able to get the API to work any more.
I set up a SOAP client before editing this API, and it tested good. I've run several tests since to be sure that it is still working. I set up an ASP server on my local computer to get detailed error reporting.
Microsoft VBScript runtime error '800a01c2' Wrong number of arguments or invalid property assignment
This is the line in question (Line 69):
isSuccess = objDoc.getElementsByTagName("Status")If it is helpful, here is the code for the entire document. Thank you!
<%@ language=vbscript %><% Option Explicit %><%
'============================================================'
' Authenticate a representative using the representative's
' user name (RepDID or EmailAddress) and password.
'============================================================'
'----------------------------------------------------------'
' Process User Submitted Data
'----------------------------------------------------------'
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
'Load form fields into variables
Dim repUsername, repPassword
repUsername = Trim(Request.Form("rep-username"))
repPassword = Trim(Request.Form("rep-password"))
'Set up basic Validation...
If repUsername = "" Or repPassword = "" Then
Response.Redirect ("../index.asp?login=error#login")
Else
'----------------------------------------------------------'
' Compose SOAP Request
'----------------------------------------------------------'
Dim xobj, SOAPRequest
Set xobj = Server.CreateObject("Msxml2.ServerXMLHTTP")
xobj.Open "POST", "http://api.domain.com/3.0/Api.asmx", False
xobj.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
xobj.setRequestHeader "SOAPAction", "http://api.domain.com/AuthenticateCustomer"
SOAPRequest = _"<?xml version=""1.0"" encoding=""utf-8""?>" &_"<x:Envelope xmlns:x='http://schemas.xmlsoap.org/soap/envelope/' xmlns:api='http://api.domain.com/'>"&_"<x:Header>" &_"<api:ApiAuthentication>" &_"<api:LoginName>string</api:LoginName>" &_"<api:Password>string</api:Password>" &_"<api:Company>string</api:Company>" &_"<api:ApiAuthentication>" &_"</x:Header>" &_"<x:Body>" &_"<api:AuthenticateCustomerRequest>" &_"<api:LoginName>"&repUsername&"</api:LoginName>" &_"<api:Password>"&repPassword&"</api:Password>" &_"</api:AuthenticateCustomerRequest>" &_"</x:Body>" &_"</x:Envelope>"
' Send SOAP envelope
xobj.send SOAPRequest
'----------------------------------------------------------'
' Retrieve SOAP Response
'----------------------------------------------------------'
Dim strReturn, objDoc, isSuccess
' Receive SOAP response
strReturn = xobj.responseText 'Get the return envelope
Set objDoc = CreateObject("Microsoft.XMLDOM")
objDoc.async = False
' Load XML
objDoc.LoadXml(strReturn)
' Parse XML
isSuccess = objDoc.getElementsByTagName("Status")("Success").text
'----------------------------------------------------------'
' If user is valid set Session Authenticated otherwise
' restrict user and redirect to the index page and show error
'----------------------------------------------------------'
' Authenticate
If isSuccess = "Success" Then
Session("Authenticated") = 1
'Session.Timeout = 1 '60 'Expire session 1 hours from current time
Response.Redirect ("../welcome.asp#AdvancedTrainingVideos")
Else
Session("Authenticated") = 0
Response.Redirect ("../index.asp?login=error#login")
End IF 'END - isSuccess
End IF ' END - Basic Validation...
End IF 'END - REQUEST_METHOD POST
%>