# Using Amazon's WSDL services

**URL:** <https://www.ruby-forum.com/t/using-amazons-wsdl-services/49075>\
**Category:** Ruby\
**Created:** [November 29, 2005, 3:00pm UTC](https://www.ruby-forum.com/t/using-amazons-wsdl-services/49075 "2005-11-29T15:00:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![minter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/278dde/32.png) [@minter](https://www.ruby-forum.com/u/minter)\
**Post date:** [November 29, 2005, 3:00pm UTC](https://www.ruby-forum.com/t/using-amazons-wsdl-services/49075/1 "2005-11-29T15:00:31Z")

</div>

I’m trying to create a simple test script to hit Amazon’s web services  
via  
their WSDL listing (specifically the Wishlist Lookup). I’m going on the  
examples in the Pickaxe.

Here’s my sample script:

##### 

#!/usr/bin/env ruby

require ‘soap/wsdlDriver’

wsdl =  
‘[http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl](http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl)’

soap = SOAP::WSDLDriverFactory.new(wsdl).createDriver

result = soap.ListLookup

##### 

However, when I run it, I’m getting a ton of error messages to the  
screen  
that look like:

Unknown element {[XML Schema](http://www.w3.org/2001/XMLSchema)}annotation.  
Unknown attr {}ref.  
Unknown attr {}ref.

Followed by a final error like:

soap.rb:10: undefined method `ListLookup’ for  
#SOAP::WSDLDriver:0x84f7898  
(NoMethodError)

I’m not a WSDL expert, so I’m confused as to whether the problem is on  
my  
end, or on the Amazon end. Anyone better-versed than I willing to take  
a  
look?

Thanks,  
Wade

---

<div class="post-metadata">

**Author:** ![minter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/278dde/32.png) [@minter](https://www.ruby-forum.com/u/minter)\
**Post date:** [November 29, 2005, 4:05pm UTC](https://www.ruby-forum.com/t/using-amazons-wsdl-services/49075/2 "2005-11-29T16:05:22Z")

</div>

On 29 Nov 2005, at 13:57, H. Wade M. wrote:

> However, when I run it, I’m getting a ton of error messages to the  
> 0x84f7898\>  
> (NoMethodError)
> 
> I’m not a WSDL expert, so I’m confused as to whether the problem is  
> on my  
> end, or on the Amazon end. Anyone better-versed than I willing to  
> take a  
> look?
> 
> Thanks,  
> Wade

Try using the ruby amazon library  
[http://www.caliban.org/ruby/ruby-amazon.shtml](http://www.caliban.org/ruby/ruby-amazon.shtml)

makes this type of thing so easy. I used it to pull album art:

require ‘open-uri.rb’  
require ‘amazon/search’  
include Amazon

DEV\_TOKEN = “XXXXXXXXXXXXXXXX” # you need to register to get  
one of these

def getArtwork (artist, album)  
image = nil  
re = Regexp.new(album, Regexp::IGNORECASE)  
print “Looking for #{artist}, #{album} …”  
req = Search::Request.new(DEV\_TOKEN, nil, ‘uk’)  
resp = req.artist\_search(artist, ‘music’, Search::LITE)  
prods = resp.products  
pr = prods.find {|pr| pr.product\_name =~ re}  
if pr  
image = open(pr.image\_url\_small).read  
print “got artwork\n”  
else  
print " not found.\n Possible album names:"  
prods.each {|pr| puts “\t#{pr.product\_name}”}  
end  
sleep 1 # don’t access amazon too quickly  
image  
end

Dave.

---

<div class="post-metadata">

**Author:** ![minter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/278dde/32.png) [@minter](https://www.ruby-forum.com/u/minter)\
**Post date:** [November 29, 2005, 4:33pm UTC](https://www.ruby-forum.com/t/using-amazons-wsdl-services/49075/3 "2005-11-29T16:33:40Z")

</div>

Dave B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Try using the ruby amazon library  
> [Ruby/Amazon](http://www.caliban.org/ruby/ruby-amazon.shtml)
> 
> makes this type of thing so easy. I used it to pull album art:

I’d checked that out, but I’m trying to make this as dependent on the  
Ruby  
base as possible, so people don’t have to install extra modules. The  
ruby-amazon is my fallback, but I’d like to get it working with the pure  
standard soap module.

–Wade

---

<div class="post-metadata">

**Author:** ![minter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/278dde/32.png) [@minter](https://www.ruby-forum.com/u/minter)\
**Post date:** [November 29, 2005, 4:41pm UTC](https://www.ruby-forum.com/t/using-amazons-wsdl-services/49075/4 "2005-11-29T16:41:46Z")

</div>

Although Amazon::Search works, I’d love to see an example that actually  
uses Soap4r and doesn’t just do the HTTP requests itself.

j.

On 11/29/05, Dave B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > Here’s my sample script:
> > 
> > look?  
> > require ‘open-uri.rb’  
> > req = Search::Request.new(DEV\_TOKEN, nil, ‘uk’)  
> > sleep 1 # don’t access amazon too quickly  
> > image  
> > end
> 
> Dave.
> 
> >

–  
“Remember. Understand. Believe. Yield! → [http://ruby-lang.org](http://ruby-lang.org)”

Jeff W.

---

<div class="post-metadata">

**Author:** ![minter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/278dde/32.png) [@minter](https://www.ruby-forum.com/u/minter)\
**Post date:** [February 4, 2006, 10:37am UTC](https://www.ruby-forum.com/t/using-amazons-wsdl-services/49075/5 "2006-02-04T10:37:07Z")

</div>

-----BEGIN PGP SIGNED MESSAGE-----  
Hash: SHA1

Hi,

Sorry for late reply.

H. Wade M. wrote:

> wsdl = ‘[http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl](http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl)’
> 
> soap = SOAP::WSDLDriverFactory.new(wsdl).createDriver

Please call a method ‘create\_rpc\_driver’ instead of ‘createDriver’.  
‘createDriver’ should work but it is deprecated method.

> result = soap.ListLookup

I tried above (with createDriver → create\_rpc\_driver modification)  
under ruby-1.8.4 and got different result;

> /usr/local/lib/ruby/1.8/soap/rpc/driver.rb:230:in `listLookup': wrong number of arguments (0 for 1) (ArgumentError) from /usr/local/lib/ruby/1.8/soap/wsdlDriver.rb:117:in `ListLookup’  
> from list.rb:10

I think the method ‘ListLookup’ requires a parameter which is defined as  
‘ListLookupRequest’ in the WSDL.

soap.listLookup(:ListLookup =\> “123”)

returns something for me.

Regards,  
// NaHi  
-----BEGIN PGP SIGNATURE-----  
Version: GnuPG v1.4.1 (Cygwin)

iD8DBQFD5HT2f6b33ts2dPkRApM7AKCMNVJnGu+3ztX5pwKZOmWxa7mqsQCgo38M  
BOd+K0Z7pbMbQTIhYHZsWbw=  
=yntq  
-----END PGP SIGNATURE-----
