Ruby net/http/get 不适用于 url,但适用于 uri。为什么?

Ruby net/http/get does not work with url's, but works with uri's. Why?

我有一个Ruby代码:

require 'net/http'
url = "
response = Net::HTTP.get_response(url, '/')

产生错误:

getaddrinfo: nodename nor servname provided, or not known (SocketError)

Failed to open TCP connection to  (getaddrinfo: nodename nor servname provided, or not known) (SocketError)

但它与 uri 完美配合:

require 'net/http'
url = "
uri = URI(url)
response = Net::HTTP.get_response(uri)

那么,谁能解释一下有什么区别,为什么会这样,以及 URI 有什么特别之处?

不同之处在于,您的 urlString 的一个实例,恰好是 URL。但因为它只是一个简单的字符串,所以没有特殊意义。

uriURI 的一个实例,它不仅是一个简单的字符串,而且已经分析了字符串中的 URL,它现在提供了几种优化方法来 return URL 的特定部分——如协议、主机名、路径或查询参数。