Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > SOAP Client -getting data from SOAP::Mapping::Object?

Reply
Thread Tools

SOAP Client -getting data from SOAP::Mapping::Object?

 
 
Mason Brown
Guest
Posts: n/a
 
      05-23-2007
I've been staring at this for too long, and at this point my mind can't
think clearly enough to continue without help... I've never worked
with SOAP before, so forgive me if I'm overlooking something simple.

I'm using Ruby to access data via SOAP from a server (using soap4r and
http-access2). I know I'm connecting successfully and getting the right
information, but don't know how to access the data from the response.
I've been testing with irb using the following:

require 'soap/wsdlDriver'
require 'http-access2'
wsdl = './proton.wsdl'
driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_drive r
driver.options["protocol.http.cookie_store_file"] = './cookie.file'
driver.login('username', 'password')
result = driver.getEntities('2588676', 'IPv4Network', '0', '0')
driver.logout

The URL for the SOAP server is read correctly from the wsdl file, and
the methods "login" and "getEntityById" are also read from the wsdl.
"result" is an array with only one element:
"result[0].class => SOAP::Mapping::Object"

The result itself looks like a single string concatenating each of the
elements received in the response:

irb(main):013:0> result[0]
=> #<SOAP::Mapping::Object:0xac7e34
{http://api.proton}value=#<SOAP::Mapping::Object:0xac7cea
{http://api.proton}id="2588677"
{http://api.proton}name=#<SOAP::Mapping::Object:0xac78f8>
{http://api.proton}properties=#<SOAP::Mapping::Object:0xac 751a>
{http://api.proton}type="IPv4Network">>

According to the WSDL, the response should be type APIEntity.Array,
which is composed of APIEntity objects with "id", "name", "properties",
and "type" elements (all defined in the wsdl). So it looks like I'm
very close to having the data where I can actually use it (as an
accessible object or even an array), but I'm just not there yet. Can
anyone tell me how to get the data out of the SOAP::Mapping::Object
objects?

Thanks!

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
bmunat@gmail.com
Guest
Posts: n/a
 
      05-23-2007
I've only messed with SOAP4r on one project, but I found that I could
get at the data in the response by treating it like a hash (a nested
hash, actually).

If you look at the wsdl for the service you're calling, it should
define the response you're expecting back... use the element names in
there as the hash keys. Or, you might be able to find some way of
iterating through the keys (.each_key maybe) in the response...

Or maybe I'm totally off base here....

hth,

b

Mason Brown wrote:
> I've been staring at this for too long, and at this point my mind can't
> think clearly enough to continue without help... I've never worked
> with SOAP before, so forgive me if I'm overlooking something simple.
>
> I'm using Ruby to access data via SOAP from a server (using soap4r and
> http-access2). I know I'm connecting successfully and getting the right
> information, but don't know how to access the data from the response.
> I've been testing with irb using the following:
>
> require 'soap/wsdlDriver'
> require 'http-access2'
> wsdl = './proton.wsdl'
> driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_drive r
> driver.options["protocol.http.cookie_store_file"] = './cookie.file'
> driver.login('username', 'password')
> result = driver.getEntities('2588676', 'IPv4Network', '0', '0')
> driver.logout
>
> The URL for the SOAP server is read correctly from the wsdl file, and
> the methods "login" and "getEntityById" are also read from the wsdl.
> "result" is an array with only one element:
> "result[0].class => SOAP::Mapping::Object"
>
> The result itself looks like a single string concatenating each of the
> elements received in the response:
>
> irb(main):013:0> result[0]
> => #<SOAP::Mapping::Object:0xac7e34
> {http://api.proton}value=#<SOAP::Mapping::Object:0xac7cea
> {http://api.proton}id="2588677"
> {http://api.proton}name=#<SOAP::Mapping::Object:0xac78f8>
> {http://api.proton}properties=#<SOAP::Mapping::Object:0xac 751a>
> {http://api.proton}type="IPv4Network">>
>
> According to the WSDL, the response should be type APIEntity.Array,
> which is composed of APIEntity objects with "id", "name", "properties",
> and "type" elements (all defined in the wsdl). So it looks like I'm
> very close to having the data where I can actually use it (as an
> accessible object or even an array), but I'm just not there yet. Can
> anyone tell me how to get the data out of the SOAP::Mapping::Object
> objects?
>
> Thanks!
>
> --
> Posted via http://www.ruby-forum.com/.


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
.Net client times out but SOAP toolkit client does not antopin@hotmail.com ASP .Net Web Services 0 09-19-2006 02:28 PM
client-to-client communication via SOAP Bruce ASP .Net Web Services 3 03-28-2005 02:31 AM
client-to-client communication via SOAP Bruce ASP .Net Web Services 0 03-24-2005 06:37 PM
To SOAP or Not To SOAP? mooseshoes XML 3 09-21-2003 04:38 PM
SOAP Client creation in ASP.NET using MS SOAP Toolkit Sham Ramakrishnan ASP .Net 2 07-01-2003 11:29 AM



Advertisments