Hi,

I just started with SOAP and Ruby and after one day trying to get it
working I'am now stuck at getting the response into useable variables
i.e. accessing the SOAP::Mapping::Object.
I used soap4r and wdsl2ruby for generating the client code

The bare SOAP XML result is:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body><FetchKnownUnitsResponse xmlns="http://support.somehost.com:
2332/">
<FetchKnownUnitsResult>
<Units xmlns="">
<Unit>
<Id>EF000000AC023F28</Id><LastConnect>2007-07-24 19:08:58</
LastConnect>
<LastClear>2007-07-23 10:34:48</LastClear>
<LastDisconnect>2007-07-24 15:51:34</LastDisconnect>
<LastRTCValue>2007-07-24 20:31:31</LastRTCValue>
<LastLogStart>2007-07-23 10:05:14</LastLogStart>
<LastLocalTime>2007-07-24 19:09:03</LastLocalTime>
<LastRecordCount>27</LastRecordCount>
<LastVersion>0</LastVersion>
<LastRevision>23</LastRevision>
<LastErrorStatus>0</LastErrorStatus>
</Unit>
</Units>
</FetchKnownUnitsResult>
</FetchKnownUnitsResponse>
</soap:Body>
</soap:Envelope>

In ruby
--- begin ruby code ------
#!/usr/bin/env ruby -d
# issue the command to the server
endpoint_url = ARGV.shift
obj = DefaultSoap.new(endpoint_url)

# run ruby with -d to see SOAP wiredumps.
obj.wiredump_dev = STDERR if $DEBUG
#
SoapResponse =  obj.fetchKnownUnits(:username => 'Me', :challenge =>
'Secret')

pp SoapResponse

----- end ruby code ----

The result on screen is:

#<FetchKnownUnitsResponse:0x102389c
 @fetchKnownUnitsResult=
  #<SOAP::Mapping::Object:0x8119ce {}Units=#<SOAP::Mapping::Object:
0x81191a {}Unit=#<SOAP::Mapping::Object:0x811802
{}Id="EF000000AC023F28" {}LastConnect="2007-07-24
19:08:58" {}LastClear="2007-07-23
10:34:48" {}LastDisconnect="2007-07-24
15:51:34" {}LastRTCValue="2007-07-24
20:31:31" {}LastLogStart="2007-07-23
10:05:14" {}LastLocalTime="2007-07-24
19:09:03" {}LastRecordCount="27" {}LastVersion="0" {}LastRevision="23" {}LastErrorStatus="0">>>>


Can someone please give the code to capture the value foe the unit Id
into a variable.

I expected it to be something like:
my_unit_id = SoapResponse['fetchKnownUnitsResult']['Units'][0]['Id']


Thanx

Patrick