在下面的代码中,我们必须使用角色加入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]
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)
您可以使用 URI#request_uri
来自文档:
根据Net :: HTTP :: Get的要求,返回HTTP请求的完整路径.
如果URI包含查询,则完整路径为URI#path +'?' + URI#query.否则,路径只是URI #path.