在Ruby中,使用"net/http",我们必须使用"?"加入url和query.自己呢?

nop*_*ole 12 ruby

在下面的代码中,我们必须使用角色加入url.pathurl.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]
Run Code Online (Sandbox Code Playgroud)

ctc*_*rry 18

request_uri在URI对象上使用该方法:

http://www.ruby-doc.org/stdlib/libdoc/uri/rdoc/classes/URI/HTTP.html#M009499

您的代码的更新版本:

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]
Run Code Online (Sandbox Code Playgroud)


Tob*_*hen 8

您可以使用 URI#request_uri

来自文档:

根据Net :: HTTP :: Get的要求,返回HTTP请求的完整路径.

如果URI包含查询,则完整路径为URI#path +'?' + URI#query.否则,路径只是URI #path.