error accessing property of an object

K

Kevin Blount

I'm tyring to access an object created by using a method from a third
party API. The documentation tells me what object should be return,
and the properties of that object, but when I try and access one of
those properties I've shown an error message saying that the Object
doesn't support this property or method. Here's the code I'm using
(edited to protect the third party NDA)

[script]
1: <%
2: dim siteApi, userApi
3: dim userObj
4: dim session, user_date_created
5:
6: set siteApi = createobject("MSSoap.SoapClient30")
7: siteApi.mssoapinit("http://thirdparty.domain/site/api?wsdl")
8:
9: set userApi = createobject("MSSoap.SoapClient30")
10: userApi.mssoapinit("http://thirdparty.domain/user/api?wsdl")
11:
12: session = siteApi.login("username","p@ssw0rd")
13:
14: set userObj = userApi.getUser(session,"webadmins")
15:
16: user_date_created = userObj.date_created
17: %>
[/script]

In the above code, the session variable is populated with the correct
info (a HEX string), suggesting that my siteApi object is being
created and used correctly. However, I get the following error when I
run it without line 16 commented out:

[error]
Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'date_created'

/soapTest/index.asp, line 16
[/error]

The documentation for the user API does show that 'date_created' is a
property of the UserStruct object, returned by the 'getUser' method,
so I'm readlly confused why this won't work.

Is there anything fundamentally wrong with my script? If not, is there
any ASP I can use to see what properties are available with the
userObj?

Thanks for any help you can offer

Kevin
 
K

Kevin Blount

why would you not simply go to the third party who created this?!?




I'm tyring to access an object created by using a method from a third
party API. The documentation tells me what object should be return,
and the properties of that object, but when I try and access one of
those properties I've shown an error message saying that the Object
doesn't support this property or method. Here's the code I'm using
(edited to protect the third party NDA)
[script]
1: <%
2: dim siteApi, userApi
3: dim userObj
4: dim session, user_date_created
5:
6: set siteApi = createobject("MSSoap.SoapClient30")
7: siteApi.mssoapinit("http://thirdparty.domain/site/api?wsdl")
8:
9: set userApi = createobject("MSSoap.SoapClient30")
10: userApi.mssoapinit("http://thirdparty.domain/user/api?wsdl")
11:
12: session = siteApi.login("username","p@ssw0rd")
13:
14: set userObj = userApi.getUser(session,"webadmins")
15:
16: user_date_created = userObj.date_created
17: %>
[/script]
In the above code, the session variable is populated with the correct
info (a HEX string), suggesting that my siteApi object is being
created and used correctly. However, I get the following error when I
run it without line 16 commented out:
[error]
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'date_created'
/soapTest/index.asp, line 16
[/error]
The documentation for the user API does show that 'date_created' is a
property of the UserStruct object, returned by the 'getUser' method,
so I'm readlly confused why this won't work.
Is there anything fundamentally wrong with my script? If not, is there
any ASP I can use to see what properties are available with the
userObj?
Thanks for any help you can offer
Kevin- Hide quoted text -

- Show quoted text -

The third party does not support my coding, and I suspect that my
coding is at fault here. Unless I can verify that my code is fine, the
door is open for the third party to say "it's your code, not our API".
 
K

Kevin Blount

perhaps the API is case sensitive ?

Kevin Blount said:
I'm tyring to access an object created by using a method from a third
party API. The documentation tells me what object should be return,
and the properties of that object, but when I try and access one of
those properties I've shown an error message saying that the Object
doesn't support this property or method. Here's the code I'm using
(edited to protect the third party NDA)
[script]
1: <%
2: dim siteApi, userApi
3: dim userObj
4: dim session, user_date_created
5:
6: set siteApi = createobject("MSSoap.SoapClient30")
7: siteApi.mssoapinit("http://thirdparty.domain/site/api?wsdl")
8:
9: set userApi = createobject("MSSoap.SoapClient30")
10: userApi.mssoapinit("http://thirdparty.domain/user/api?wsdl")
11:
12: session = siteApi.login("username","p@ssw0rd")
13:
14: set userObj = userApi.getUser(session,"webadmins")
15:
16: user_date_created = userObj.date_created
17: %>
[/script]
In the above code, the session variable is populated with the correct
info (a HEX string), suggesting that my siteApi object is being
created and used correctly. However, I get the following error when I
run it without line 16 commented out:
[error]
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'date_created'
/soapTest/index.asp, line 16
[/error]
The documentation for the user API does show that 'date_created' is a
property of the UserStruct object, returned by the 'getUser' method,
so I'm readlly confused why this won't work.
Is there anything fundamentally wrong with my script? If not, is there
any ASP I can use to see what properties are available with the
userObj?
Thanks for any help you can offer

Thanks for the suggestions, but all the cases used above are per the
documentation (assuming the documentation is right :p)

I'm guess by that comment, you don't see anything noticeably wrong
with my code?
 
K

Kevin Blount

The error message is pretty specific.

Not sure what else is possible, since we know nothing of the API . You have either instantiated the wrong object or the
method/property doesn't exist for that object.



Kevin Blount said:
perhaps the API is case sensitive ?
I'm tyring to access an object created by using a method from a third
party API. The documentation tells me what object should be return,
and the properties of that object, but when I try and access one of
those properties I've shown an error message saying that the Object
doesn't support this property or method. Here's the code I'm using
(edited to protect the third party NDA)
[script]
1: <%
2: dim siteApi, userApi
3: dim userObj
4: dim session, user_date_created
5:
6: set siteApi = createobject("MSSoap.SoapClient30")
7: siteApi.mssoapinit("http://thirdparty.domain/site/api?wsdl")
8:
9: set userApi = createobject("MSSoap.SoapClient30")
10: userApi.mssoapinit("http://thirdparty.domain/user/api?wsdl")
11:
12: session = siteApi.login("username","p@ssw0rd")
13:
14: set userObj = userApi.getUser(session,"webadmins")
15:
16: user_date_created = userObj.date_created
17: %>
[/script]
In the above code, the session variable is populated with the correct
info (a HEX string), suggesting that my siteApi object is being
created and used correctly. However, I get the following error when I
run it without line 16 commented out:
[error]
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'date_created'
/soapTest/index.asp, line 16
[/error]
The documentation for the user API does show that 'date_created' is a
property of the UserStruct object, returned by the 'getUser' method,
so I'm readlly confused why this won't work.
Is there anything fundamentally wrong with my script? If not, is there
any ASP I can use to see what properties are available with the
userObj?
Thanks for any help you can offer
Kevin
Thanks for the suggestions, but all the cases used above are per the
documentation (assuming the documentation is right :p)
I'm guess by that comment, you don't see anything noticeably wrong
with my code?- Hide quoted text -

- Show quoted text -

OK, that sounds like 2 reasonable assumptions. Do you know of any ASP
code that I can use to 'look inside' the object?

Since I last replied I've done some digging, and found that
userObj.length returns a value of 11. This almost matches the number
of documented properties of the expected returned object, which is 10.
Using another of the APIs provided by the third party, I checked the
length property and it returned 24, which again is close the 23
documented properties of that returned object.

My guess is that the object I'm creating does contain the info I
need... I'm just not using the right property names or syntax (or
something!!) to retrieve it. If I could loop through the object
somehow and list all the properties, that would help immensely.

Any ideas?
 
A

Ayush

[Kevin Blount] wrote-:
If I could loop through the object
somehow and list all the properties, that would help immensely.

In JScript:

1: siteApi = new ActiveXObject("MSSoap.SoapClient30")
2: siteApi.mssoapinit("http://thirdparty.domain/site/api?wsdl")
3:
4: userApi = new ActiveXObject("MSSoap.SoapClient30")
5: userApi.mssoapinit("http://thirdparty.domain/user/api?wsdl")
6:
7: session = siteApi.login("username","p@ssw0rd")
8:
9: userObj = userApi.getUser(session,"webadmins")
10:
11: list='Property/Method Name: Property/Method Value'
12: for(prop in userObj)
13: list+=prop + ": "+userObj[prop]+"\n"
14: WScript.Echo(list)


Good Luck, Ayush.
 
K

Kevin Blount

[Kevin Blount] wrote-:
If I could loop through the object
somehow and list all the properties, that would help immensely.

In JScript:

1: siteApi = new ActiveXObject("MSSoap.SoapClient30")
2: siteApi.mssoapinit("http://thirdparty.domain/site/api?wsdl")
3:
4: userApi = new ActiveXObject("MSSoap.SoapClient30")
5: userApi.mssoapinit("http://thirdparty.domain/user/api?wsdl")
6:
7: session = siteApi.login("username","p@ssw0rd")
8:
9: userObj = userApi.getUser(session,"webadmins")
10:
11: list='Property/Method Name: Property/Method Value'
12: for(prop in userObj)
13: list+=prop + ": "+userObj[prop]+"\n"
14: WScript.Echo(list)

Good Luck, Ayush.

Hi Ayush,

Thanks for the response. I was able to figure out where I was going
wrong yesterday, and it was as I suspected part of my code. I had to
remember that the returned object was XML, and then I went out
searching and found a way to check the contents, or in better terms,
the nodes inside the object.

The script I found turns out to match your suggestion, execpt for
being in VBscript not JScript:

for each node In userApi
Response.Write("[" & node.nodeName & "]{" & node.Text & "}")
next
From that I was able to find the node IDs, and then user_date_created
variable could be populated using:

user_date_created = userObj(8).Text (where 8 is the internal ID of the
date I need, based on 0 thru 7 being other info)
 

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,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top