Have you tried refreshing the web service in the CF administrator after making changes to the web service CFC? According to the error message, that appears to be the current problem.
-----Original Message----- From: Rick Root [mailto:[EMAIL PROTECTED] Sent: Tuesday, May 25, 2004 6:49 AM To: [EMAIL PROTECTED] Subject: [CFCDev] Complex Datatypes in web services Okay, for those of you on CF-talk, I apologize, you've seen this before. I'm hoping that this list will prove to be more fruitful. I'm trying to write a web service that returns a complex datatype (like a struct but using a CFC instead), and one of the elements is an Array which contains complex datatypes. I need to make this portable so that a VB app can consume it (my prior solution when using Flash as the consumer was to just return structs..) I was looking at the WSDL for the Google API, and it does exactly what I want to do. It returns a Complex Data Type named "GoogleSearchElement", which in turn contains a number of simple elements and a couple of complex data type elements. One of these sub-elements is named "GoogleSearchArray", a complex data type that is an array containing another complex datatype "ResultElement". That's as far as I really need to take this.. http://api.google.com/GoogleSearch.wsdl So anyway... I want to mimic this functionality... but I can't figure out how. Here is my ReturnObject CFC that describes the complex data type that I want to return... a couple of strings and an array. <cfcomponent> <CFPROPERTY NAME="ERRORCODE" TYPE="STRING"> <CFPROPERTY NAME="ERRORMESSAGE" TYPE="STRING"> <CFPROPERTY NAME="Results" TYPE="array"> </cfcomponent> Now, I want the "Results" array to be an array of "ResultElement" datatypes. so here is my ResultElement CFC... <cfcomponent> <CFPROPERTY NAME="USERID" type="string"> <CFPROPERTY NAME="FULLNAME" type="string"> <CFPROPERTY NAME="TITLE" type="string"> <CFPROPERTY NAME="DEPT" type="string"> <CFPROPERTY NAME="PHONE" type="string"> <CFPROPERTY NAME="FAX" type="string"> <CFPROPERTY NAME="EMAIL" type="string"> </cfcomponent> So next, I write a CFC that looks like this, called "directory.cfc" <cfcomponent hint="Authorization Functions" output="no"> <cffunction name="getAllUsers" access="remote" returntype="ReturnObject" displayname="getAllUsers" hint="getAllUsers"> <CFSET retVal = CreateObject("component","components.authorization.ReturnObject")> <CFSET retVal.ERRORCODE = "0"> <CFSET retVal.ERRORMESSAGE = "Success!"> <CFSET retVal.Results = ArrayNew(1)> <CFSET retVal[1] = CreateObject("component","components.authorization.ResultElement")> <CFSET retVal[2] = CreateObject("component","components.authorization.ResultElement")> <CFSET retVal[1].USERID = "rick"> <CFSET retVal[1].FULLNAME = "Rick Root"> <CFSET retVal[1].TITLE = "Coder"> <CFSET retVal[2].USERID = "john"> <CFSET retVal[2].FULLNAME = "John Doe"> <CFSET retVal[2].TITLE = "Coder Assistant"> <CFRETURN retVal> </cffunction> </cfcomponent> This works fine if I implement it via an HTTP call... as in: http://www.ads.duke.edu/components/authorization/directory.cfc?method=ge tAllUsers So finally, I write a CFM to invoke the web service via a SOAP call. <cfinvoke webservice="http://www.ads.duke.edu/components/authorization/directory.c fc?WSDL" method="getAllUsers" returnvariable="retVal"> <CFDUMP VAR="#retVal#"> And I call it: http://www.ads.duke.edu/components/authorization/directorytest.cfm UGLY! HORROR! YUCK! NASTY ERROR! - Rick [Todays Threads] [This Message] [Subscription] [Fast Unsubscribe] [User Settings] ---------------------------------------------------------- You are subscribed to cfcdev. To unsubscribe, send an email to [EMAIL PROTECTED] with the words 'unsubscribe cfcdev' in the message of the email. CFCDev is run by CFCZone (www.cfczone.org) and supported by Mindtool, Corporation (www.mindtool.com). An archive of the CFCDev list is available at www.mail-archive.com/[EMAIL PROTECTED] ---------------------------------------------------------- You are subscribed to cfcdev. To unsubscribe, send an email to [EMAIL PROTECTED] with the words 'unsubscribe cfcdev' in the message of the email. CFCDev is run by CFCZone (www.cfczone.org) and supported by Mindtool, Corporation (www.mindtool.com). An archive of the CFCDev list is available at www.mail-archive.com/[EMAIL PROTECTED]
