Forum: Ruby Using Amazon's WSDL services

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
8ac1f4de9d8b599ae7d4e09f53d570ec?d=identicon&s=25 minter (Guest)
on 2005-11-29 15:00
(Received via mailing list)
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/...

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 {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
D8914caf9cc67403f1f153e0a2104293?d=identicon&s=25 dave.baldwin (Guest)
on 2005-11-29 16:05
(Received via mailing list)
On 29 Nov 2005, at 13:57, H. Wade Minter 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

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.
8ac1f4de9d8b599ae7d4e09f53d570ec?d=identicon&s=25 minter (Guest)
on 2005-11-29 16:33
(Received via mailing list)
Dave Baldwin <dave.baldwin@3dlabs.com> wrote:
>
> Try using the ruby amazon library
> 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
A7c9c275318af9e1e3812fab9660cd7c?d=identicon&s=25 jeff.darklight (Guest)
on 2005-11-29 16:41
(Received via mailing list)
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 Baldwin <dave.baldwin@3dlabs.com> 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"

Jeff Wood
C4ec160c6223ee24609cbd07fd922be5?d=identicon&s=25 NAKAMURA, Hiroshi (Guest)
on 2006-02-04 10:37
(Received via mailing list)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Sorry for late reply.

H. Wade Minter wrote:
>
> wsdl = 'http://webservices.amazon.com/AWSECommerceService/...
>
> 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-----
This topic is locked and can not be replied to.