Ruby 2.4

URI::HTTP

class URI::HTTP

Parent:URI::GenericIncluded modules:OpenURI::OpenRead

HTTP URI的语法在RFC1738第3.3节中定义。

请注意,Ruby URI库允许包含用户名和密码的HTTP URL。根据RFC,这是不合法的,但在MS04-004安全更新之前,在Internet Explorer 5和6中受支持。请参阅URL:[support.microsoft.com/kb/834489](http://support.microsoft.com/kb/834489)。

常量

COMPONENT

URI::HTTP的可用组件的数组

DEFAULT_PORT

URI::HTTP的默认端口为80

公共类方法

build(args) Show source

描述

从组件创建一个新的URI::HTTP对象,并进行语法检查。

接受的组件是用户信息,主机,端口,路径,查询和片段。

这些组件应该以数组的形式提供,或者以组件名称前面用冒号形成的哈希形式提供。

如果使用数组,则必须按照userinfo,host,port,path,query,fragment的顺序传递组件。

示例:

newuri = URI::HTTP.build(host: 'www.example.com', path: '/foo/bar') newuri = URI::HTTP.build([nil, "www.example.com", nil, "/path", "query", 'fragment'])

目前,如果传递userinfo组件,则此方法根据RFC 1738生成无效的HTTP URI。

调用超类方法URI::Generic.build

# File lib/uri/http.rb, line 59 def self.build(args) tmp = Util.make_components_hash(self, args) super(tmp) end

公共实例方法

request_uri() Show source

# # == Description # # Create a new URI::HTTP object from generic URI components as per # RFC 2396. No HTTP-specific syntax checking (as per RFC 1738) is # performed. # # Arguments are +scheme+, +userinfo+, +host+, +port+, +registry+, +path+, # +opaque+, +query+ and +fragment+, in that order. # # Example: # # uri = URI::HTTP.new("http", nil, "www.example.com", nil, nil, # "/path", nil, "query", "fragment") # # # See also URI::Generic.new # def initialize(*arg) super(*arg) end

# == Description

# File lib/uri/http.rb, line 101 def request_uri return unless @path url = @query ? "#@path?#@query" : @path.dup url.start_with?(?/.freeze) ? url : ?/ + url end