在Ruby中,使用;net/http“;,我们必须加入url并使用“查询”进行查询&引用;我们自己

在Ruby中,使用;net/http“;,我们必须加入url并使用“查询”进行查询&引用;我们自己,ruby,Ruby,在下面的代码中,我们必须使用?字符连接url.path和url.query我们自己?有没有更优雅的方法?我必须使用net/http,因为在某些情况下,我也想在头中为用户代理添加一个字符串 require 'net/http' url_string = 'http://www.time.gov/timezone.cgi?Pacific/d/-8' url = URI.parse(url_string) response = Net::HTTP.start(url.host, url.port

在下面的代码中,我们必须使用
字符连接
url.path
url.query
我们自己?有没有更优雅的方法?我必须使用
net/http
,因为在某些情况下,我也想在头中为用户代理添加一个字符串

require 'net/http'

url_string = 'http://www.time.gov/timezone.cgi?Pacific/d/-8'

url = URI.parse(url_string)

response = Net::HTTP.start(url.host, url.port) do |http|
  http.get(url.path + '?' + url.query)
end
puts response.body[/<td.*(\d\d:\d\d:\d\d)/, 1]
需要“net/http”
url\u字符串=http://www.time.gov/timezone.cgi?Pacific/d/-8'
url=URI.parse(url\u字符串)
response=Net::HTTP.start(url.host,url.port)do | HTTP|
http.get(url.path+'?'+url.query)
结束
将response.body[/放入您可以使用的

从文档中:

返回HTTP的完整路径 请求,按照 Net::HTTP::Get

如果URI包含查询,则完整的 路径是URI#路径+'?'+URI#查询。 否则,路径就是简单的 URI#路径


对uri对象使用
request\u uri
方法:

代码的更新版本:

require 'net/http'

url_string = 'http://www.time.gov/timezone.cgi?Pacific/d/-8'

url = URI.parse(url_string)

response = Net::HTTP.start(url.host, url.port) do |http|
  http.get(url.request_uri)
end
puts response.body[/<td.*(\d\d:\d\d:\d\d)/, 1]
需要“net/http”
url\u字符串=http://www.time.gov/timezone.cgi?Pacific/d/-8'
url=URI.parse(url\u字符串)
response=Net::HTTP.start(url.host,url.port)do | HTTP|
http.get(url.request\u uri)
结束

Prime[/[P>>NET/HTTP ]可能有很好的基础,但不太友好。 如果您的客户端正在访问一个设计良好的服务,那么像或之类的东西将是一个更好的选择。您还可以编写一个独立于应用程序的模块,以一种适合您的方式对net/http进行初始化