0

我认为这很简单,但我已经尝试了好几天没有解决方案。我尝试过的一切都返回错误。希望能在这里得到一些帮助。

首先,我在这里使用这个 gemfile:

https://github.com/ryanwkan/covetous

使用 VALID tagID(rwk#1242) 初始化后

@temp = Covetous::Profile::Career.new 'rwk#1242'

我得到一个这样的返回对象

http://pastebin.com/CcW0aaLL

对象的顶部如下所示:

#<Covetous::Profile::Career:0x000001014284c8 @url="http://us.battle.net/api/d3/profile/rwk-1242/", @response=#<HTTParty::Response:0x102e69ff8 parsed_response={"heroes"=>[{"name"=>"Ziyi", "id"=>10692899, "level"=>60, "hardcore"=>false, "paragonLevel"=>87, "gender"=>1, "dead"=>false, "class"=>"wizard", "last-updated"=>1354337248}, {"name"=>"Aerendil", etc ...

如果我使用 INVALID tagID(invalid#9999) 进行初始化

@temp = Covetous::Profile::Career.new 'invalid#9999'

我得到一个像这样的返回对象:

#<Covetous::Profile::Career:0x00000100dfbcf8 @url="http://us.battle.net/api/d3/profile/invalid-9999/", @response=#<HTTParty::Response:0x100d96a88 parsed_response={"code"=>"OOPS", "reason"=>"There was a problem processing the request."}, @response=#<Net::HTTPOK 200 OK readbody=true>, @headers={"date"=>["Tue, 18 Dec 2012 02:30:00 GMT"], "server"=>["Apache"], "x-frame-options"=>["SAMEORIGIN"], "content-language"=>["en-US"], "vary"=>["Accept-Encoding"], "connection"=>["close"], "transfer-encoding"=>["chunked"], "content-type"=>["application/json;charset=UTF-8"]}>>

每当给出无效标签时,我都需要闪烁错误消息。

问题是,我怎么知道我得到的是有效响应还是无效响应?

我试过检查键'code'或'heroes'的响应,但它只在键可用时才有效,否则我得到一个NoMethodError。有什么方法可以测试密钥的存在,返回真/假?

4

1 回答 1

0

如果在您正在寻找的情况下要求code或已知会给您一个 NoMethodError,只需将该调用包装在/块中并使用.heroesbeginendrescue

于 2012-12-18T02:51:38.113 回答