【问题标题】:Net::HTTP SocketError: getaddrinfo: nodename nor servname provided, or not knownNet::HTTP SocketError: getaddrinfo: nodename or servname provided, or not known
【发布时间】:2016-01-24 09:06:46
【问题描述】:

我已经用谷歌搜索了这个问题,并浏览了关于这个问题的相关帖子。我不认为这是 Rails / Ruby 问题,但不知道下一步该去哪里。

irb(main):007:0> Net::HTTP.get_response("http://www.apple.com","")
SocketError: getaddrinfo: nodename nor servname provided, or not known
from /Users/dan/.rbenv/versions/2.2.3/lib/ruby/2.2.0/net/http.rb:879:in `initialize'

否则没有网络问题。 apple.com 在浏览器中加载良好。这是在我的本地机器上开发的 Rails 应用程序中。希望通过第三方 API 拉出 JSON 请求。 All Net::HTTP 请求这样的电影。

【问题讨论】:

    标签: ruby


    【解决方案1】:

    您必须将URI 对象传递给get_response 方法,以便其中包含schemehost 等信息:

    URI('http://www.apple.com').host
    # => "www.apple.com"
    URI('http://www.apple.com').scheme
    # => "http" 
    

    所以,要解决您的问题,请这样做:

    Net::HTTP.get_response(URI("http://www.apple.com"))
    # => #<Net::HTTPOK 200 OK readbody=true> 
    

    要获取响应正文,请执行以下操作:

    Net::HTTP.get_response(URI("http://www.apple.com")).body
    

    有关详细信息,请参阅get_response 文档。

    【讨论】:

    • 阅读文档!!? ;) 那行得通,感谢您的解释。我给出的示例没有 URI 调用。谢谢
    猜你喜欢
    • 2020-01-23
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 2017-02-20
    • 2013-06-13
    • 2019-12-18
    • 2016-03-20
    • 2016-01-20
    相关资源
    最近更新 更多