我正在使用 vaccum 从亚马逊产品广告 API 获取产品详细信息。req = Vacuum.new
req.configure(key: configatron.api.amazon.productAPI.key,
secret: configatron.api.amazon.productAPI.secret,
tag: 'biz-val')
regex = Regexp.new "http://([^/]+)/([\\w-]+/)?(dp|gp/product|exec/obidos/asin)/(\\w+/)?(\\w{10})"
productID=regex.match(@url).captures[4];
host=regex.match(@url).captures[0];
utype=regex.match(@url).captures[2];
@url="http://#{host}/#{utype}/#{productID}"
params = { 'Operation' => 'ItemLookup',
'ItemId' => productID,
'ResponseGroup'=>'Large'
}
res = req.get(:query => params)
hsh=Hash.from_xml(res.body)
@details=hsh
item=hsh[:ItemLookupResponse][:Items][:Item]#Throws an Undefined method [] for nilClass
您可以忽略正则表达式解析。我已经检查过它工作正常。从 res.body 生成的哈希是一个有效的哈希,它在呈现的 json 中显示得很好(@details),但是当我尝试在代码中访问它时会抛出一个 nilClass 的东西。我认为这可能是因为hsh[:ItemLookupResponse]
返回的不是哈希值。我不确定它会返回什么。我如何访问 :Items ?