Accessing string arrays using classic ASP (vbscript)

A

ASPfool

Hello everyone,

Please help me before I throw my computer out of the window:

I'm working on a web application in classic ASP (vbscript), which is making
calls to some webservices. The calls are made using SOAP - i installed the
SOAP3 toolkit on my windows 2k server to enable this. The webservice calls
are returning String Arrays which I can't seem to do anything useful with.

The call shown below returns a string array with two elements (stored in
returnedData):
....

dim returnedData
returnedData=SoapClient3.createCase(param1, param2, param3)
set SoapClient3=nothing

response.write "<br>"&vartype(returnedData) '8200
response.write "<br>"&typename(returnedData) 'String()
response.write "<br>"&ubound(returnedData) '1
....

The call to the webservice works just fine, and my data is successfully sent
to the other system, however I don't seem to be able to do anything with the
returned string array stored in 'returnedData', bar identify the vartype
(8200) and typename (String()), and number of elements (2 as expected).

As soon as I try something like;

response.write returnedData(1) '(line 58)

I get the error:

Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch
/bwc/ordercomplete.asp, line 58

All other attempts to do something useful with the array fail too, e.g.

myString=Join(returnedData)

results in:

Error Type:
Microsoft VBScript runtime (0x800A01CA)
Variable uses an Automation type not supported in VBScript
/bwc/ordercomplete.asp, line 59

I really need to be able to access these array values - and cannot see any
means of doing it. I'd be very grateful for any help,

Regards,
Jon.
 
M

Mark Schupp

Have you tried explicitly casting the array element to a string?

Response.Write CStr(returnedData(1))
 
A

ASPfool

Thanks for your input Mark.

Response.Write CStr(returnedData(1)) 'line 58

results in....

Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch
/bwc/ordercomplete.asp, line 58

Any more ideas anyone?
 
M

Mark Schupp

Unfortunately I have never done anything with SOAP. I just had a quick look
at the help file and it looks like you can modify the "type mapper". That
may be the approach you need to take.

It also appears that there are ways to get the data back as a list of XML
nodes.

First I would try to get the raw XML back and see what it looks like.
 
A

ASPfool

Hi Mark,

Thanks again for the reply. I'll look into the type mapper options... In
terms of 'getting the raw xml back' - would something like this do the trick?


dim oDOM
Set oDOM = Server.CreateObject("MSXML2.DOMDocument.4.0")
oDOM.loadXML(SoapClient3.createCase(param1, param2, param3))
response.write(oDOM.XML)

Cheers,
Jon.
 
M

Mark Schupp

check the soap toolkit help file. There was something about it returning a
nodelist instead of a specific variant type if there was no type mapper
defined in the configuration files.
 
A

ASPfool

Thanks Mark. In the end I felt that it was too difficult to sort this within
classic asp, so with some wonderful fudging, I've sent the data to an
intermediary asp.net file, made by web service call, and forwarded the
returned values to my classic asp app. In future, I think i'll write
everything in .net.... I guess its time to abandon the classic asp ship!

Thanks again for all your input,
regards,
Jon.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,566
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top