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 有什么特别之处?
不同之处在于,您的 url
是 String
的一个实例,恰好是 URL。但因为它只是一个简单的字符串,所以没有特殊意义。
而 uri
是 URI
的一个实例,它不仅是一个简单的字符串,而且已经分析了字符串中的 URL,它现在提供了几种优化方法来 return URL 的特定部分——如协议、主机名、路径或查询参数。
我有一个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 有什么特别之处?
不同之处在于,您的 url
是 String
的一个实例,恰好是 URL。但因为它只是一个简单的字符串,所以没有特殊意义。
而 uri
是 URI
的一个实例,它不仅是一个简单的字符串,而且已经分析了字符串中的 URL,它现在提供了几种优化方法来 return URL 的特定部分——如协议、主机名、路径或查询参数。