Using classic ASP to access XML values generated by ColdFusion

NOTE: This is a cross-post from ASP classic forum.

Hi:
I have this sample section of an XML file generated from a ColdFusion server:

-<wsdl: PortType name=“organizationalModule”>
-<wsdl: operation name=“getPositions” parameterOrder=“siteid validationkey WhichPosition WhichUnit”>
<wsdl: input name=“getPositionsRequest” message=“impl:getPositionsRequest”/>
<wsdl: output name=“getPositionsResponse” message=“impl:getPositionsResponse”/>
<wsdl: fault name=“CFCInvocationException” message=“impl:CFCInvocationException”/>
-</wsdl: operation>

I was trying to retrieve the valus associated with siteid, validationkey, WhichPosition, and WhichUnit by using the following code from as classic ASP page:

<%

Dim returnString
Dim myXML ’ this variable hold the XML data in a DOM Object
Dim SoapRequest
Dim SoapURL
Dim ResponseXML
Dim bXMLLoadError

Set SoapRequest = Server.CreateObject(“MSXML2.XMLHTTP”)
Set myXML =Server.CreateObject(“MSXML.DOMDocument”)

myXML.Async=False
SoapURL = “https://ourserver.com/applicationAPI/organizationalModule.cfc?wsdl
SoapRequest.Open “GET”,SoapURL , False
SoapRequest.Send()

'Check that the XML was retrieved successfully by checking to ensure that a HTTP status code of 200 was received (200 = OK)

if Not myXML.load(SoapRequest.responseXML) or XMLHTTP.Status <> 200 then 'an Error loading XML
Response.Write(“<font color=”“red”“>Page Error: Could not load XML from remote server</font><br>”) 'Show error message
bXMLLoadError = True

Else 'parse the XML

Dim siteid
Dim validationkey
Dim WhichPosition
Dim WhichUnit
Dim siteValue
Dim validValue
Dim positValue
Dim unitValue

Set NodeList = objXML.documentElement.selectNodes(“/portType/operation”)

Set nodesiteid=myXML.documentElement.selectSingleNode(“//siteid”).text
siteValue=nodesiteid.getAttribute(“siteid”)
MsgBox siteValue

Set nodevalid=myXML.documentElement.selectSingleNode(“//validationkey”).text
validValue=nodevalid.getAttribute(“validationkey”)
MsgBox validValue

Set nodePos=myXML.documentElement.selectSingleNode(“//WhichPosition”).text
positValue=nodePos.getAttribute(“WhichPosition”)
MsgBox positValue

Set nodeUnit=myXML.documentElement.selectSingleNode(“//WhichUnit”).text
unitValue=nodeUnit.getAttribute(“WhichUnit”)
MsgBox unitValue

Set myXML = Nothing

End If

%>

My problem is I am not seeing anything back when I run this script. Am I missing something? Do I have to do a specific response.write for each retrieved field?

I would appreciate any suggestion that would make my crude code work.

Thanks.
ReySan

Right now you are just asking for the description of the service (wsdl) not the actual data. Probably should also be sending HTTP POST requests to get the data. In any case you probably want to find the old COM+ SOAP Toolkit – that should make life alot easier. There are vastly better things one can do than manually parse the verbosity that is SOAP.

Thanks wwb_99. I am just starting out and am just gettting a grasp of dealing with XML and web services. I now know I need to do an hhtp post request to get back the data!

'Appreciate it.
ReySan

You missed the important part here – don’t consume SOAP web services manually. The toy you want to use is the SOAP Toolkit.

wwb_99:
Yes I realized that after looking at those scary nodes!:confused: In fact I already downloaded the SOAP Toolkit and has been fiddling with it since my last post.
Thanks for pointing me in the right direction.

Cheers!
ReySan