2014-12-04 169 views
1

我想了解本教程一些红宝石HTTP请求响应代码 -未初始化的常量HTTPSuccess(NameError)

http://danknox.github.io/2013/01/27/using-rubys-native-nethttp-library/

到目前为止的代码 -

require "net/http" 
require "uri" 

uri = URI.parse("http://api.random.com") 
http = Net::HTTP.new(uri.host, uri.port) 

# Continuing our example from above 

request = Net::HTTP::Get.new("/search?question=somequestion") 
response = http.request(request) 

# response.code 
# response.body 

case response 
when HTTPSuccess 
    response.body 
when HTTPRedirect 
    follow_redirect(response) # you would need to implement this method 
else 
    raise StandardError, "Something went wrong :(" 
end 

错误 -

Test.rb:16: uninitialized constant HTTPSuccess (NameError) 

我看到了这个问题上唯一的堆栈溢出帖子。没有帮助。为什么会发生这种情况?

+3

根据本文档(http://ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTPSuccess.html),可能需要在Net ::(例如: ,当Net :: HTTPSuccess')? – 2014-12-04 22:41:04

+0

@PlatinumAzure - 正确。我将不得不使用命名空间。如何做到这一点没有命名空间? – stack1 2014-12-04 23:26:56

回答

1

发生这种情况是因为HTTPSuccess尚未初始化。请尝试使用Net::HTTPSuccess(和Net::HTTPRedirection)。

另外,将您的病例说明更改为case response.class。在你的时间语句中,你正在检查类的平等。

+0

现在,我得到这个错误 - '24:未初始化的常量Net :: HTTPRedirect(NameError)'。 – stack1 2014-12-04 23:30:23

+0

对不起,它应该是HTTPRedirection。我会更新我的回答 – jmera 2014-12-04 23:36:19

+0

谢谢!它的工作现在。教程代码不正确。 – stack1 2014-12-05 00:50:00

相关问题