Your IP : 3.17.78.182
--- !ruby/object:RI::ClassDescription
attributes:
- !ruby/object:RI::Attribute
comment:
- !ruby/struct:SM::Flow::P
body: The host name to connect to.
name: address
rw: R
- !ruby/object:RI::Attribute
comment:
name: close_on_empty_response
rw: RW
- !ruby/object:RI::Attribute
comment:
- !ruby/struct:SM::Flow::P
body: Seconds to wait until connection is opened. If the HTTP object cannot open a connection in this many seconds, it raises a TimeoutError exception.
name: open_timeout
rw: RW
- !ruby/object:RI::Attribute
comment:
- !ruby/struct:SM::Flow::P
body: The port number to connect to.
name: port
rw: R
- !ruby/object:RI::Attribute
comment:
name: proxy_address
rw: R
- !ruby/object:RI::Attribute
comment:
name: proxy_pass
rw: R
- !ruby/object:RI::Attribute
comment:
name: proxy_port
rw: R
- !ruby/object:RI::Attribute
comment:
name: proxy_user
rw: R
- !ruby/object:RI::Attribute
comment:
- !ruby/struct:SM::Flow::P
body: Seconds to wait until reading one block (by one read(2) call). If the HTTP object cannot open a connection in this many seconds, it raises a TimeoutError exception.
name: read_timeout
rw: R
class_methods:
- !ruby/object:RI::MethodSummary
name: Proxy
- !ruby/object:RI::MethodSummary
name: default_port
- !ruby/object:RI::MethodSummary
name: get
- !ruby/object:RI::MethodSummary
name: get_print
- !ruby/object:RI::MethodSummary
name: get_response
- !ruby/object:RI::MethodSummary
name: http_default_port
- !ruby/object:RI::MethodSummary
name: https_default_port
- !ruby/object:RI::MethodSummary
name: new
- !ruby/object:RI::MethodSummary
name: new
- !ruby/object:RI::MethodSummary
name: post_form
- !ruby/object:RI::MethodSummary
name: proxy_class?
- !ruby/object:RI::MethodSummary
name: ssl_context_accessor
- !ruby/object:RI::MethodSummary
name: start
- !ruby/object:RI::MethodSummary
name: version_1_1
- !ruby/object:RI::MethodSummary
name: version_1_1?
- !ruby/object:RI::MethodSummary
name: version_1_2
- !ruby/object:RI::MethodSummary
name: version_1_2?
comment:
- !ruby/struct:SM::Flow::H
level: 2
text: What Is This Library?
- !ruby/struct:SM::Flow::P
body: This library provides your program functions to access WWW documents via HTTP, Hyper Text Transfer Protocol version 1.1. For details of HTTP, refer [RFC2616] (http://www.ietf.org/rfc/rfc2616.txt).
- !ruby/struct:SM::Flow::H
level: 2
text: Examples
- !ruby/struct:SM::Flow::H
level: 3
text: Getting Document From WWW Server
- !ruby/struct:SM::Flow::P
body: "Example #1: Simple GET+print"
- !ruby/struct:SM::Flow::VERB
body: " require 'net/http'\n Net::HTTP.get_print 'www.example.com', '/index.html'\n"
- !ruby/struct:SM::Flow::P
body: "Example #2: Simple GET+print by URL"
- !ruby/struct:SM::Flow::VERB
body: " require 'net/http'\n require 'uri'\n Net::HTTP.get_print URI.parse('http://www.example.com/index.html')\n"
- !ruby/struct:SM::Flow::P
body: "Example #3: More generic GET+print"
- !ruby/struct:SM::Flow::VERB
body: " require 'net/http'\n require 'uri'\n\n url = URI.parse('http://www.example.com/index.html')\n res = Net::HTTP.start(url.host, url.port) {|http|\n http.get('/index.html')\n }\n puts res.body\n"
- !ruby/struct:SM::Flow::P
body: "Example #4: More generic GET+print"
- !ruby/struct:SM::Flow::VERB
body: " require 'net/http'\n\n url = URI.parse('http://www.example.com/index.html')\n req = Net::HTTP::Get.new(url.path)\n res = Net::HTTP.start(url.host, url.port) {|http|\n http.request(req)\n }\n puts res.body\n"
- !ruby/struct:SM::Flow::H
level: 3
text: Posting Form Data
- !ruby/struct:SM::Flow::VERB
body: " require 'net/http'\n require 'uri'\n\n #1: Simple POST\n res = Net::HTTP.post_form(URI.parse('http://www.example.com/search.cgi'),\n {'q'=>'ruby', 'max'=>'50'})\n puts res.body\n\n #2: POST with basic authentication\n res = Net::HTTP.post_form(URI.parse('http://jack:pass@www.example.com/todo.cgi'),\n {'from'=>'2005-01-01', 'to'=>'2005-03-31'})\n puts res.body\n\n #3: Detailed control\n url = URI.parse('http://www.example.com/todo.cgi')\n req = Net::HTTP::Post.new(url.path)\n req.basic_auth 'jack', 'pass'\n req.set_form_data({'from'=>'2005-01-01', 'to'=>'2005-03-31'}, ';')\n res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }\n case res\n when Net::HTTPSuccess, Net::HTTPRedirection\n # OK\n else\n res.error!\n end\n"
- !ruby/struct:SM::Flow::H
level: 3
text: Accessing via Proxy
- !ruby/struct:SM::Flow::P
body: Net::HTTP.Proxy creates http proxy class. It has same methods of Net::HTTP but its instances always connect to proxy, instead of given host.
- !ruby/struct:SM::Flow::VERB
body: " require 'net/http'\n\n proxy_addr = 'your.proxy.host'\n proxy_port = 8080\n :\n Net::HTTP::Proxy(proxy_addr, proxy_port).start('www.example.com') {|http|\n # always connect to your.proxy.addr:8080\n :\n }\n"
- !ruby/struct:SM::Flow::P
body: Since Net::HTTP.Proxy returns Net::HTTP itself when proxy_addr is nil, there's no need to change code if there's proxy or not.
- !ruby/struct:SM::Flow::P
body: "There are two additional parameters in Net::HTTP.Proxy which allow to specify proxy user name and password:"
- !ruby/struct:SM::Flow::VERB
body: " Net::HTTP::Proxy(proxy_addr, proxy_port, proxy_user = nil, proxy_pass = nil)\n"
- !ruby/struct:SM::Flow::P
body: "You may use them to work with authorization-enabled proxies:"
- !ruby/struct:SM::Flow::VERB
body: " require 'net/http'\n require 'uri'\n\n proxy_host = 'your.proxy.host'\n proxy_port = 8080\n uri = URI.parse(ENV['http_proxy'])\n proxy_user, proxy_pass = uri.userinfo.split(/:/) if uri.userinfo\n Net::HTTP::Proxy(proxy_host, proxy_port,\n proxy_user, proxy_pass).start('www.example.com') {|http|\n # always connect to your.proxy.addr:8080 using specified username and password\n :\n }\n"
- !ruby/struct:SM::Flow::P
body: Note that net/http never rely on HTTP_PROXY environment variable. If you want to use proxy, set it explicitly.
- !ruby/struct:SM::Flow::H
level: 3
text: Following Redirection
- !ruby/struct:SM::Flow::VERB
body: " require 'net/http'\n require 'uri'\n\n def fetch(uri_str, limit = 10)\n # You should choose better exception.\n raise ArgumentError, 'HTTP redirect too deep' if limit == 0\n\n response = Net::HTTP.get_response(URI.parse(uri_str))\n case response\n when Net::HTTPSuccess then response\n when Net::HTTPRedirection then fetch(response['location'], limit - 1)\n else\n response.error!\n end\n end\n\n print fetch('http://www.ruby-lang.org')\n"
- !ruby/struct:SM::Flow::P
body: Net::HTTPSuccess and Net::HTTPRedirection is a HTTPResponse class. All HTTPResponse objects belong to its own response class which indicate HTTP result status. For details of response classes, see section "HTTP Response Classes".
- !ruby/struct:SM::Flow::H
level: 3
text: Basic Authentication
- !ruby/struct:SM::Flow::VERB
body: " require 'net/http'\n\n Net::HTTP.start('www.example.com') {|http|\n req = Net::HTTP::Get.new('/secret-page.html')\n req.basic_auth 'account', 'password'\n response = http.request(req)\n print response.body\n }\n"
- !ruby/struct:SM::Flow::H
level: 3
text: HTTP Request Classes
- !ruby/struct:SM::Flow::P
body: Here is HTTP request class hierarchy.
- !ruby/struct:SM::Flow::VERB
body: " Net::HTTPRequest\n Net::HTTP::Get\n Net::HTTP::Head\n Net::HTTP::Post\n Net::HTTP::Put\n Net::HTTP::Proppatch\n Net::HTTP::Lock\n Net::HTTP::Unlock\n Net::HTTP::Options\n Net::HTTP::Propfind\n Net::HTTP::Delete\n Net::HTTP::Move\n Net::HTTP::Copy\n Net::HTTP::Mkcol\n Net::HTTP::Trace\n"
- !ruby/struct:SM::Flow::H
level: 3
text: HTTP Response Classes
- !ruby/struct:SM::Flow::P
body: Here is HTTP response class hierarchy. All classes are defined in Net module.
- !ruby/struct:SM::Flow::VERB
body: " HTTPResponse\n HTTPUnknownResponse\n HTTPInformation # 1xx\n HTTPContinue # 100\n HTTPSwitchProtocl # 101\n HTTPSuccess # 2xx\n HTTPOK # 200\n HTTPCreated # 201\n HTTPAccepted # 202\n HTTPNonAuthoritativeInformation # 203\n HTTPNoContent # 204\n HTTPResetContent # 205\n HTTPPartialContent # 206\n HTTPRedirection # 3xx\n HTTPMultipleChoice # 300\n HTTPMovedPermanently # 301\n HTTPFound # 302\n HTTPSeeOther # 303\n HTTPNotModified # 304\n HTTPUseProxy # 305\n HTTPTemporaryRedirect # 307\n HTTPClientError # 4xx\n HTTPBadRequest # 400\n HTTPUnauthorized # 401\n HTTPPaymentRequired # 402\n HTTPForbidden # 403\n HTTPNotFound # 404\n HTTPMethodNotAllowed # 405\n HTTPNotAcceptable # 406\n HTTPProxyAuthenticationRequired # 407\n HTTPRequestTimeOut # 408\n HTTPConflict # 409\n HTTPGone # 410\n HTTPLengthRequired # 411\n HTTPPreconditionFailed # 412\n HTTPRequestEntityTooLarge # 413\n HTTPRequestURITooLong # 414\n HTTPUnsupportedMediaType # 415\n HTTPRequestedRangeNotSatisfiable # 416\n HTTPExpectationFailed # 417\n HTTPServerError # 5xx\n HTTPInternalServerError # 500\n HTTPNotImplemented # 501\n HTTPBadGateway # 502\n HTTPServiceUnavailable # 503\n HTTPGatewayTimeOut # 504\n HTTPVersionNotSupported # 505\n"
- !ruby/struct:SM::Flow::H
level: 2
text: Switching Net::HTTP versions
- !ruby/struct:SM::Flow::P
body: You can use net/http.rb 1.1 features (bundled with Ruby 1.6) by calling HTTP.version_1_1. Calling Net::HTTP.version_1_2 allows you to use 1.2 features again.
- !ruby/struct:SM::Flow::VERB
body: " # example\n Net::HTTP.start {|http1| ...(http1 has 1.2 features)... }\n\n Net::HTTP.version_1_1\n Net::HTTP.start {|http2| ...(http2 has 1.1 features)... }\n\n Net::HTTP.version_1_2\n Net::HTTP.start {|http3| ...(http3 has 1.2 features)... }\n"
- !ruby/struct:SM::Flow::P
body: This function is NOT thread-safe.
constants: []
full_name: Net::HTTP
includes: []
instance_methods:
- !ruby/object:RI::MethodSummary
name: D
- !ruby/object:RI::MethodSummary
name: active?
- !ruby/object:RI::MethodSummary
name: addr_port
- !ruby/object:RI::MethodSummary
name: begin_transport
- !ruby/object:RI::MethodSummary
name: conn_address
- !ruby/object:RI::MethodSummary
name: conn_port
- !ruby/object:RI::MethodSummary
name: connect
- !ruby/object:RI::MethodSummary
name: copy
- !ruby/object:RI::MethodSummary
name: delete
- !ruby/object:RI::MethodSummary
name: do_finish
- !ruby/object:RI::MethodSummary
name: do_start
- !ruby/object:RI::MethodSummary
name: edit_path
- !ruby/object:RI::MethodSummary
name: end_transport
- !ruby/object:RI::MethodSummary
name: finish
- !ruby/object:RI::MethodSummary
name: get
- !ruby/object:RI::MethodSummary
name: get2
- !ruby/object:RI::MethodSummary
name: head
- !ruby/object:RI::MethodSummary
name: head2
- !ruby/object:RI::MethodSummary
name: inspect
- !ruby/object:RI::MethodSummary
name: keep_alive?
- !ruby/object:RI::MethodSummary
name: lock
- !ruby/object:RI::MethodSummary
name: mkcol
- !ruby/object:RI::MethodSummary
name: move
- !ruby/object:RI::MethodSummary
name: on_connect
- !ruby/object:RI::MethodSummary
name: options
- !ruby/object:RI::MethodSummary
name: peer_cert
- !ruby/object:RI::MethodSummary
name: post
- !ruby/object:RI::MethodSummary
name: post2
- !ruby/object:RI::MethodSummary
name: propfind
- !ruby/object:RI::MethodSummary
name: proppatch
- !ruby/object:RI::MethodSummary
name: proxy?
- !ruby/object:RI::MethodSummary
name: proxy_address
- !ruby/object:RI::MethodSummary
name: proxy_pass
- !ruby/object:RI::MethodSummary
name: proxy_port
- !ruby/object:RI::MethodSummary
name: proxy_user
- !ruby/object:RI::MethodSummary
name: proxyaddr
- !ruby/object:RI::MethodSummary
name: proxyport
- !ruby/object:RI::MethodSummary
name: read_timeout=
- !ruby/object:RI::MethodSummary
name: request
- !ruby/object:RI::MethodSummary
name: request_get
- !ruby/object:RI::MethodSummary
name: request_head
- !ruby/object:RI::MethodSummary
name: request_post
- !ruby/object:RI::MethodSummary
name: send_request
- !ruby/object:RI::MethodSummary
name: set_debug_output
- !ruby/object:RI::MethodSummary
name: ssl_timeout
- !ruby/object:RI::MethodSummary
name: ssl_timeout=
- !ruby/object:RI::MethodSummary
name: start
- !ruby/object:RI::MethodSummary
name: started?
- !ruby/object:RI::MethodSummary
name: timeout=
- !ruby/object:RI::MethodSummary
name: trace
- !ruby/object:RI::MethodSummary
name: unlock
- !ruby/object:RI::MethodSummary
name: use_ssl
- !ruby/object:RI::MethodSummary
name: use_ssl=
- !ruby/object:RI::MethodSummary
name: use_ssl?
- !ruby/object:RI::MethodSummary
name: use_ssl?
name: HTTP
superclass: Protocol