Class: Net::HTTP
- Defined in:
- lib/net/http.rb,
lib/net/http/backward.rb
Overview
:enddoc:
Defined Under Namespace
Modules: ProxyDelta Classes: Copy, Delete, Get, Head, Lock, Mkcol, Move, Options, Patch, Post, Propfind, Proppatch, Put, Trace, Unlock
Constant Summary collapse
- VERSION =
:stopdoc:
"0.4.1"
- HTTPVersion =
'1.1'
- SSL_IVNAMES =
[ :@ca_file, :@ca_path, :@cert, :@cert_store, :@ciphers, :@extra_chain_cert, :@key, :@ssl_timeout, :@ssl_version, :@min_version, :@max_version, :@verify_callback, :@verify_depth, :@verify_mode, :@verify_hostname, ]
- SSL_ATTRIBUTES =
:nodoc:
[ :ca_file, :ca_path, :cert, :cert_store, :ciphers, :extra_chain_cert, :key, :ssl_timeout, :ssl_version, :min_version, :max_version, :verify_callback, :verify_depth, :verify_mode, :verify_hostname, ]
- STATUS_CODES =
{ 100 => 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 103 => 'Early Hints', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-Status', 208 => 'Already Reported', 226 => 'IM Used', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary Redirect', 308 => 'Permanent Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Content Too Large', 414 => 'URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Range Not Satisfiable', 417 => 'Expectation Failed', 421 => 'Misdirected Request', 422 => 'Unprocessable Content', 423 => 'Locked', 424 => 'Failed Dependency', 425 => 'Too Early', 426 => 'Upgrade Required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 451 => 'Unavailable For Legal Reasons', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 506 => 'Variant Also Negotiates', 507 => 'Insufficient Storage', 508 => 'Loop Detected', 510 => 'Not Extended (OBSOLETED)', 511 => 'Network Authentication Required', }
- ProxyMod =
ProxyDelta
Class Attribute Summary collapse
-
.proxy_address ⇒ Object
readonly
Returns the address of the proxy host, or
nil
if none; see Net::HTTP@Proxy+Server. -
.proxy_pass ⇒ Object
readonly
Returns the password for accessing the proxy, or
nil
if none; see Net::HTTP@Proxy+Server. -
.proxy_port ⇒ Object
readonly
Returns the port number of the proxy host, or
nil
if none; see Net::HTTP@Proxy+Server. -
.proxy_user ⇒ Object
readonly
Returns the user name for accessing the proxy, or
nil
if none; see Net::HTTP@Proxy+Server.
Instance Attribute Summary collapse
-
#address ⇒ Object
readonly
Returns the string host name or host IP given as argument
address
in ::new. -
#ca_file ⇒ Object
Sets or returns the path to a CA certification file in PEM format.
-
#ca_path ⇒ Object
Sets or returns the path of to CA directory containing certification files in PEM format.
-
#cert ⇒ Object
Sets or returns the OpenSSL::X509::Certificate object to be used for client certification.
-
#cert_store ⇒ Object
Sets or returns the X509::Store to be used for verifying peer certificate.
-
#ciphers ⇒ Object
Sets or returns the available SSL ciphers.
-
#close_on_empty_response ⇒ Object
Sets or returns whether to close the connection when the response is empty; initially
false
. -
#continue_timeout ⇒ Object
Returns the continue timeout value; see continue_timeout=.
-
#extra_chain_cert ⇒ Object
Sets or returns the extra X509 certificates to be added to the certificate chain.
-
#ignore_eof ⇒ Object
Sets or returns whether to ignore end-of-file when reading a response body with
Content-Length
headers; initiallytrue
. -
#keep_alive_timeout ⇒ Object
Sets or returns the numeric (Integer or Float) number of seconds to keep the connection open after a request is sent; initially 2.
-
#key ⇒ Object
Sets or returns the OpenSSL::PKey::RSA or OpenSSL::PKey::DSA object.
-
#local_host ⇒ Object
Sets or returns the string local host used to establish the connection; initially
nil
. -
#local_port ⇒ Object
Sets or returns the integer local port used to establish the connection; initially
nil
. -
#max_retries ⇒ Object
Returns the maximum number of times to retry an idempotent request; see #max_retries=.
-
#max_version ⇒ Object
Sets or returns the maximum SSL version.
-
#min_version ⇒ Object
Sets or returns the minimum SSL version.
-
#open_timeout ⇒ Object
Sets or returns the numeric (Integer or Float) number of seconds to wait for a connection to open; initially 60.
-
#port ⇒ Object
readonly
Returns the integer port number given as argument
port
in ::new. -
#proxy_address ⇒ Object
(also: #proxyaddr)
Returns the address of the proxy server, if defined,
nil
otherwise; see Proxy Server. -
#proxy_from_env ⇒ Object
writeonly
Sets whether to determine the proxy from environment variable ‘
ENV['http_proxy']
’; see Proxy Using ENV[‘http_proxy’]. -
#proxy_pass ⇒ Object
Returns the password of the proxy server, if defined,
nil
otherwise; see Proxy Server. -
#proxy_port ⇒ Object
(also: #proxyport)
Returns the port number of the proxy server, if defined,
nil
otherwise; see Proxy Server. -
#proxy_user ⇒ Object
Returns the user name of the proxy server, if defined,
nil
otherwise; see Proxy Server. -
#read_timeout ⇒ Object
Returns the numeric (Integer or Float) number of seconds to wait for one block to be read (via one read(2) call); see #read_timeout=.
-
#response_body_encoding ⇒ Object
Returns the encoding to use for the response body; see #response_body_encoding=.
-
#ssl_timeout ⇒ Object
Sets or returns the SSL timeout seconds.
-
#ssl_version ⇒ Object
Sets or returns the SSL version.
-
#verify_callback ⇒ Object
Sets or returns the callback for the server certification verification.
-
#verify_depth ⇒ Object
Sets or returns the maximum depth for the certificate chain verification.
-
#verify_hostname ⇒ Object
Sets or returns whether to verify that the server certificate is valid for the hostname.
-
#verify_mode ⇒ Object
Sets or returns the flags for server the certification verification at the beginning of the SSL/TLS session.
-
#write_timeout ⇒ Object
Returns the numeric (Integer or Float) number of seconds to wait for one block to be written (via one write(2) call); see #write_timeout=.
Class Method Summary collapse
-
.default_port ⇒ Object
Returns integer
80
, the default port to use for HTTP requests:. -
.get(uri_or_host, path_or_headers = nil, port = nil) ⇒ Object
:call-seq: Net::HTTP.get(hostname, path, port = 80) -> body Net::HTTP:get(uri, headers = {}, port = uri.port) -> body.
-
.get_print(uri_or_host, path_or_headers = nil, port = nil) ⇒ Object
:call-seq: Net::HTTP.get_print(hostname, path, port = 80) -> nil Net::HTTP:get_print(uri, headers = {}, port = uri.port) -> nil.
-
.get_response(uri_or_host, path_or_headers = nil, port = nil, &block) ⇒ Object
:call-seq: Net::HTTP.get_response(hostname, path, port = 80) -> http_response Net::HTTP:get_response(uri, headers = {}, port = uri.port) -> http_response.
-
.http_default_port ⇒ Object
Returns integer
80
, the default port to use for HTTP requests:. -
.https_default_port ⇒ Object
Returns integer
443
, the default port to use for HTTPS requests:. -
.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_no_proxy = nil) ⇒ Object
Returns a new Net::HTTP object
http
(but does not open a TCP connection or HTTP session). -
.newobj ⇒ Object
:nodoc:.
-
.post(url, data, header = nil) ⇒ Object
Posts data to a host; returns a Net::HTTPResponse object.
-
.post_form(url, params) ⇒ Object
Posts data to a host; returns a Net::HTTPResponse object.
-
.Proxy(p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil) ⇒ Object
Creates an HTTP proxy class which behaves like Net::HTTP, but performs all access via the specified proxy.
-
.proxy_class? ⇒ Boolean
Returns true if self is a class which was created by HTTP::Proxy.
-
.socket_type ⇒ Object
:nodoc: obsolete.
-
.start(address, *arg, &block) ⇒ Object
:call-seq: HTTP.start(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, opts) -> http HTTP.start(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, opts) {|http| … } -> object.
-
.version_1_1? ⇒ Boolean
(also: is_version_1_1?)
Returns
false
; retained for compatibility. -
.version_1_2 ⇒ Object
Returns
true
; retained for compatibility. -
.version_1_2? ⇒ Boolean
(also: is_version_1_2?)
Returns
true
; retained for compatibility.
Instance Method Summary collapse
-
#copy(path, initheader = nil) ⇒ Object
Sends a COPY request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#delete(path, initheader = {'Depth' => 'Infinity'}) ⇒ Object
Sends a DELETE request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#finish ⇒ Object
Finishes the HTTP session:.
-
#get(path, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq: get(path, initheader = nil) {|res| … }.
-
#head(path, initheader = nil) ⇒ Object
Sends a HEAD request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#initialize(address, port = nil) ⇒ HTTP
constructor
Creates a new Net::HTTP object for the specified server address, without opening the TCP connection or initializing the HTTP session.
-
#inspect ⇒ Object
Returns a string representation of
self
:. -
#ipaddr ⇒ Object
Returns the IP address for the connection.
-
#ipaddr=(addr) ⇒ Object
Sets the IP address for the connection:.
-
#lock(path, body, initheader = nil) ⇒ Object
Sends a LOCK request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#mkcol(path, body = nil, initheader = nil) ⇒ Object
Sends a MKCOL request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#move(path, initheader = nil) ⇒ Object
Sends a MOVE request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#options(path, initheader = nil) ⇒ Object
Sends an Options request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#patch(path, data, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq: patch(path, data, initheader = nil) {|res| … }.
-
#peer_cert ⇒ Object
Returns the X509 certificate chain (an array of strings) for the session’s socket peer, or
nil
if none. -
#post(path, data, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq: post(path, data, initheader = nil) {|res| … }.
-
#propfind(path, body = nil, initheader = {'Depth' => '0'}) ⇒ Object
Sends a PROPFIND request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#proppatch(path, body, initheader = nil) ⇒ Object
Sends a PROPPATCH request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#proxy? ⇒ Boolean
Returns
true
if a proxy server is defined,false
otherwise; see Proxy Server. -
#proxy_from_env? ⇒ Boolean
Returns
true
if the proxy server is defined in the environment,false
otherwise; see Proxy Server. -
#proxy_uri ⇒ Object
The proxy URI determined from the environment for this connection.
-
#put(path, data, initheader = nil) ⇒ Object
Sends a PUT request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#request(req, body = nil, &block) ⇒ Object
Sends the given request
req
to the server; forms the response into a Net::HTTPResponse object. -
#request_get(path, initheader = nil, &block) ⇒ Object
(also: #get2)
Sends a GET request to the server; forms the response into a Net::HTTPResponse object.
-
#request_head(path, initheader = nil, &block) ⇒ Object
(also: #head2)
Sends a HEAD request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#request_post(path, data, initheader = nil, &block) ⇒ Object
(also: #post2)
Sends a POST request to the server; forms the response into a Net::HTTPResponse object.
-
#request_put(path, data, initheader = nil, &block) ⇒ Object
(also: #put2)
Sends a PUT request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#send_request(name, path, data = nil, header = nil) ⇒ Object
Sends an HTTP request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#set_debug_output(output) ⇒ Object
WARNING This method opens a serious security hole.
-
#start ⇒ Object
Starts an HTTP session.
-
#started? ⇒ Boolean
(also: #active?)
Returns
true
if the HTTP session has been started:. -
#trace(path, initheader = nil) ⇒ Object
Sends a TRACE request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#unlock(path, body, initheader = nil) ⇒ Object
Sends an UNLOCK request to the server; returns an instance of a subclass of Net::HTTPResponse.
-
#use_ssl=(flag) ⇒ Object
Sets whether a new session is to use Transport Layer Security:.
-
#use_ssl? ⇒ Boolean
Returns
true
ifself
uses SSL,false
otherwise.
Constructor Details
#initialize(address, port = nil) ⇒ HTTP
Creates a new Net::HTTP object for the specified server address, without opening the TCP connection or initializing the HTTP session. The address
should be a DNS hostname or IP address.
1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 |
# File 'lib/net/http.rb', line 1097 def initialize(address, port = nil) # :nodoc: @address = address @port = (port || HTTP.default_port) @ipaddr = nil @local_host = nil @local_port = nil @curr_http_version = HTTPVersion @keep_alive_timeout = 2 @last_communicated = nil @close_on_empty_response = false @socket = nil @started = false @open_timeout = 60 @read_timeout = 60 @write_timeout = 60 @continue_timeout = nil @max_retries = 1 @debug_output = nil @response_body_encoding = false @ignore_eof = true @proxy_from_env = false @proxy_uri = nil @proxy_address = nil @proxy_port = nil @proxy_user = nil @proxy_pass = nil @use_ssl = false @ssl_context = nil @ssl_session = nil @sspi_enabled = false SSL_IVNAMES.each do |ivname| instance_variable_set ivname, nil end end |
Class Attribute Details
.proxy_address ⇒ Object (readonly)
Returns the address of the proxy host, or nil
if none; see Net::HTTP@Proxy+Server.
1772 1773 1774 |
# File 'lib/net/http.rb', line 1772 def proxy_address @proxy_address end |
.proxy_pass ⇒ Object (readonly)
Returns the password for accessing the proxy, or nil
if none; see Net::HTTP@Proxy+Server.
1784 1785 1786 |
# File 'lib/net/http.rb', line 1784 def proxy_pass @proxy_pass end |
.proxy_port ⇒ Object (readonly)
Returns the port number of the proxy host, or nil
if none; see Net::HTTP@Proxy+Server.
1776 1777 1778 |
# File 'lib/net/http.rb', line 1776 def proxy_port @proxy_port end |
.proxy_user ⇒ Object (readonly)
Returns the user name for accessing the proxy, or nil
if none; see Net::HTTP@Proxy+Server.
1780 1781 1782 |
# File 'lib/net/http.rb', line 1780 def proxy_user @proxy_user end |
Instance Attribute Details
#address ⇒ Object (readonly)
Returns the string host name or host IP given as argument address
in ::new.
1198 1199 1200 |
# File 'lib/net/http.rb', line 1198 def address @address end |
#ca_file ⇒ Object
Sets or returns the path to a CA certification file in PEM format.
1483 1484 1485 |
# File 'lib/net/http.rb', line 1483 def ca_file @ca_file end |
#ca_path ⇒ Object
Sets or returns the path of to CA directory containing certification files in PEM format.
1487 1488 1489 |
# File 'lib/net/http.rb', line 1487 def ca_path @ca_path end |
#cert ⇒ Object
Sets or returns the OpenSSL::X509::Certificate object to be used for client certification.
1491 1492 1493 |
# File 'lib/net/http.rb', line 1491 def cert @cert end |
#cert_store ⇒ Object
Sets or returns the X509::Store to be used for verifying peer certificate.
1494 1495 1496 |
# File 'lib/net/http.rb', line 1494 def cert_store @cert_store end |
#ciphers ⇒ Object
Sets or returns the available SSL ciphers. See OpenSSL::SSL::SSLContext#ciphers=.
1498 1499 1500 |
# File 'lib/net/http.rb', line 1498 def ciphers @ciphers end |
#close_on_empty_response ⇒ Object
Sets or returns whether to close the connection when the response is empty; initially false
.
1425 1426 1427 |
# File 'lib/net/http.rb', line 1425 def close_on_empty_response @close_on_empty_response end |
#continue_timeout ⇒ Object
Returns the continue timeout value; see continue_timeout=.
1378 1379 1380 |
# File 'lib/net/http.rb', line 1378 def continue_timeout @continue_timeout end |
#extra_chain_cert ⇒ Object
Sets or returns the extra X509 certificates to be added to the certificate chain. See OpenSSL::SSL::SSLContext#add_certificate.
1502 1503 1504 |
# File 'lib/net/http.rb', line 1502 def extra_chain_cert @extra_chain_cert end |
#ignore_eof ⇒ Object
Sets or returns whether to ignore end-of-file when reading a response body with Content-Length
headers; initially true
.
1401 1402 1403 |
# File 'lib/net/http.rb', line 1401 def ignore_eof @ignore_eof end |
#keep_alive_timeout ⇒ Object
Sets or returns the numeric (Integer or Float) number of seconds to keep the connection open after a request is sent; initially 2. If a new request is made during the given interval, the still-open connection is used; otherwise the connection will have been closed and a new connection is opened.
1396 1397 1398 |
# File 'lib/net/http.rb', line 1396 def keep_alive_timeout @keep_alive_timeout end |
#key ⇒ Object
Sets or returns the OpenSSL::PKey::RSA or OpenSSL::PKey::DSA object.
1505 1506 1507 |
# File 'lib/net/http.rb', line 1505 def key @key end |
#local_host ⇒ Object
Sets or returns the string local host used to establish the connection; initially nil
.
1205 1206 1207 |
# File 'lib/net/http.rb', line 1205 def local_host @local_host end |
#local_port ⇒ Object
Sets or returns the integer local port used to establish the connection; initially nil
.
1209 1210 1211 |
# File 'lib/net/http.rb', line 1209 def local_port @local_port end |
#max_retries ⇒ Object
Returns the maximum number of times to retry an idempotent request; see #max_retries=.
1334 1335 1336 |
# File 'lib/net/http.rb', line 1334 def max_retries @max_retries end |
#max_version ⇒ Object
Sets or returns the maximum SSL version. See OpenSSL::SSL::SSLContext#max_version=.
1520 1521 1522 |
# File 'lib/net/http.rb', line 1520 def max_version @max_version end |
#min_version ⇒ Object
Sets or returns the minimum SSL version. See OpenSSL::SSL::SSLContext#min_version=.
1516 1517 1518 |
# File 'lib/net/http.rb', line 1516 def min_version @min_version end |
#open_timeout ⇒ Object
Sets or returns the numeric (Integer or Float) number of seconds to wait for a connection to open; initially 60. If the connection is not made in the given interval, an exception is raised.
1300 1301 1302 |
# File 'lib/net/http.rb', line 1300 def open_timeout @open_timeout end |
#port ⇒ Object (readonly)
Returns the integer port number given as argument port
in ::new.
1201 1202 1203 |
# File 'lib/net/http.rb', line 1201 def port @port end |
#proxy_address ⇒ Object Also known as: proxyaddr
Returns the address of the proxy server, if defined, nil
otherwise; see Proxy Server.
1811 1812 1813 1814 1815 1816 1817 |
# File 'lib/net/http.rb', line 1811 def proxy_address if @proxy_from_env then proxy_uri&.hostname else @proxy_address end end |
#proxy_from_env=(value) ⇒ Object (writeonly)
Sets whether to determine the proxy from environment variable ‘ENV['http_proxy']
’; see Proxy Using ENV[‘http_proxy’].
1241 1242 1243 |
# File 'lib/net/http.rb', line 1241 def proxy_from_env=(value) @proxy_from_env = value end |
#proxy_pass ⇒ Object
Returns the password of the proxy server, if defined, nil
otherwise; see Proxy Server.
1842 1843 1844 1845 1846 1847 1848 1849 |
# File 'lib/net/http.rb', line 1842 def proxy_pass if @proxy_from_env pass = proxy_uri&.password unescape(pass) if pass else @proxy_pass end end |
#proxy_port ⇒ Object Also known as: proxyport
Returns the port number of the proxy server, if defined, nil
otherwise; see Proxy Server.
1821 1822 1823 1824 1825 1826 1827 |
# File 'lib/net/http.rb', line 1821 def proxy_port if @proxy_from_env then proxy_uri&.port else @proxy_port end end |
#proxy_user ⇒ Object
Returns the user name of the proxy server, if defined, nil
otherwise; see Proxy Server.
1831 1832 1833 1834 1835 1836 1837 1838 |
# File 'lib/net/http.rb', line 1831 def proxy_user if @proxy_from_env user = proxy_uri&.user unescape(user) if user else @proxy_user end end |
#read_timeout ⇒ Object
Returns the numeric (Integer or Float) number of seconds to wait for one block to be read (via one read(2) call); see #read_timeout=.
1305 1306 1307 |
# File 'lib/net/http.rb', line 1305 def read_timeout @read_timeout end |
#response_body_encoding ⇒ Object
Returns the encoding to use for the response body; see #response_body_encoding=.
1213 1214 1215 |
# File 'lib/net/http.rb', line 1213 def response_body_encoding @response_body_encoding end |
#ssl_timeout ⇒ Object
Sets or returns the SSL timeout seconds.
1508 1509 1510 |
# File 'lib/net/http.rb', line 1508 def ssl_timeout @ssl_timeout end |
#ssl_version ⇒ Object
Sets or returns the SSL version. See OpenSSL::SSL::SSLContext#ssl_version=.
1512 1513 1514 |
# File 'lib/net/http.rb', line 1512 def ssl_version @ssl_version end |
#verify_callback ⇒ Object
Sets or returns the callback for the server certification verification.
1523 1524 1525 |
# File 'lib/net/http.rb', line 1523 def verify_callback @verify_callback end |
#verify_depth ⇒ Object
Sets or returns the maximum depth for the certificate chain verification.
1526 1527 1528 |
# File 'lib/net/http.rb', line 1526 def verify_depth @verify_depth end |
#verify_hostname ⇒ Object
Sets or returns whether to verify that the server certificate is valid for the hostname. See OpenSSL::SSL::SSLContext#verify_hostname=.
1536 1537 1538 |
# File 'lib/net/http.rb', line 1536 def verify_hostname @verify_hostname end |
#verify_mode ⇒ Object
Sets or returns the flags for server the certification verification at the beginning of the SSL/TLS session. OpenSSL::SSL::VERIFY_NONE or OpenSSL::SSL::VERIFY_PEER are acceptable.
1531 1532 1533 |
# File 'lib/net/http.rb', line 1531 def verify_mode @verify_mode end |
#write_timeout ⇒ Object
Returns the numeric (Integer or Float) number of seconds to wait for one block to be written (via one write(2) call); see #write_timeout=.
1310 1311 1312 |
# File 'lib/net/http.rb', line 1310 def write_timeout @write_timeout end |
Class Method Details
.default_port ⇒ Object
904 905 906 |
# File 'lib/net/http.rb', line 904 def HTTP.default_port http_default_port() end |
.get(uri_or_host, path_or_headers = nil, port = nil) ⇒ Object
:call-seq:
Net::HTTP.get(hostname, path, port = 80) -> body
Net::HTTP:get(uri, headers = {}, port = uri.port) -> body
Sends a GET request and returns the HTTP response body as a string.
With string arguments hostname
and path
:
hostname = 'jsonplaceholder.typicode.com'
path = '/todos/1'
puts Net::HTTP.get(hostname, path)
Output:
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
With URI object uri
and optional hash argument headers
:
uri = URI('https://jsonplaceholder.typicode.com/todos/1')
headers = {'Content-type' => 'application/json; charset=UTF-8'}
Net::HTTP.get(uri, headers)
Related:
-
Net::HTTP::Get: request class for HTTP method
GET
. -
Net::HTTP#get: convenience method for HTTP method
GET
.
806 807 808 |
# File 'lib/net/http.rb', line 806 def HTTP.get(uri_or_host, path_or_headers = nil, port = nil) get_response(uri_or_host, path_or_headers, port).body end |
.get_print(uri_or_host, path_or_headers = nil, port = nil) ⇒ Object
:call-seq:
Net::HTTP.get_print(hostname, path, port = 80) -> nil
Net::HTTP:get_print(uri, headers = {}, port = uri.port) -> nil
Like Net::HTTP.get, but writes the returned body to $stdout; returns nil
.
765 766 767 768 769 770 771 772 |
# File 'lib/net/http.rb', line 765 def HTTP.get_print(uri_or_host, path_or_headers = nil, port = nil) get_response(uri_or_host, path_or_headers, port) {|res| res.read_body do |chunk| $stdout.print chunk end } nil end |
.get_response(uri_or_host, path_or_headers = nil, port = nil, &block) ⇒ Object
:call-seq:
Net::HTTP.get_response(hostname, path, port = 80) -> http_response
Net::HTTP:get_response(uri, headers = {}, port = uri.port) -> http_response
Like Net::HTTP.get, but returns a Net::HTTPResponse object instead of the body string.
816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 |
# File 'lib/net/http.rb', line 816 def HTTP.get_response(uri_or_host, path_or_headers = nil, port = nil, &block) if path_or_headers && !path_or_headers.is_a?(Hash) host = uri_or_host path = path_or_headers new(host, port || HTTP.default_port).start {|http| return http.request_get(path, &block) } else uri = uri_or_host headers = path_or_headers start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') {|http| return http.request_get(uri, headers, &block) } end end |
.http_default_port ⇒ Object
912 913 914 |
# File 'lib/net/http.rb', line 912 def HTTP.http_default_port 80 end |
.https_default_port ⇒ Object
920 921 922 |
# File 'lib/net/http.rb', line 920 def HTTP.https_default_port 443 end |
.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_no_proxy = nil) ⇒ Object
Returns a new Net::HTTP object http
(but does not open a TCP connection or HTTP session).
With only string argument address
given (and ENV['http_proxy']
undefined or nil
), the returned http
:
-
Has the given address.
-
Has the default port number, Net::HTTP.default_port (80).
-
Has no proxy.
Example:
http = Net::HTTP.new(hostname)
# => #<Net::HTTP jsonplaceholder.typicode.com:80 open=false>
http.address # => "jsonplaceholder.typicode.com"
http.port # => 80
http.proxy? # => false
With integer argument port
also given, the returned http
has the given port:
http = Net::HTTP.new(hostname, 8000)
# => #<Net::HTTP jsonplaceholder.typicode.com:8000 open=false>
http.port # => 8000
For proxy-defining arguments p_addr
through p_no_proxy
, see Proxy Server.
1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 |
# File 'lib/net/http.rb', line 1069 def HTTP.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_no_proxy = nil) http = super address, port if proxy_class? then # from Net::HTTP::Proxy() http.proxy_from_env = @proxy_from_env http.proxy_address = @proxy_address http.proxy_port = @proxy_port http.proxy_user = @proxy_user http.proxy_pass = @proxy_pass elsif p_addr == :ENV then http.proxy_from_env = true else if p_addr && p_no_proxy && !URI::Generic.use_proxy?(address, address, port, p_no_proxy) p_addr = nil p_port = nil end http.proxy_address = p_addr http.proxy_port = p_port || default_port http.proxy_user = p_user http.proxy_pass = p_pass end http end |
.post(url, data, header = nil) ⇒ Object
Posts data to a host; returns a Net::HTTPResponse object.
Argument url
must be a URL; argument data
must be a string:
_uri = uri.dup
_uri.path = '/posts'
data = '{"title": "foo", "body": "bar", "userId": 1}'
headers = {'content-type': 'application/json'}
res = Net::HTTP.post(_uri, data, headers) # => #<Net::HTTPCreated 201 Created readbody=true>
puts res.body
Output:
{
"title": "foo",
"body": "bar",
"userId": 1,
"id": 101
}
Related:
-
Net::HTTP::Post: request class for HTTP method
POST
. -
Net::HTTP#post: convenience method for HTTP method
POST
.
859 860 861 862 863 864 |
# File 'lib/net/http.rb', line 859 def HTTP.post(url, data, header = nil) start(url.hostname, url.port, :use_ssl => url.scheme == 'https' ) {|http| http.post(url, data, header) } end |
.post_form(url, params) ⇒ Object
Posts data to a host; returns a Net::HTTPResponse object.
Argument url
must be a URI; argument data
must be a hash:
_uri = uri.dup
_uri.path = '/posts'
data = {title: 'foo', body: 'bar', userId: 1}
res = Net::HTTP.post_form(_uri, data) # => #<Net::HTTPCreated 201 Created readbody=true>
puts res.body
Output:
{
"title": "foo",
"body": "bar",
"userId": "1",
"id": 101
}
886 887 888 889 890 891 892 893 894 |
# File 'lib/net/http.rb', line 886 def HTTP.post_form(url, params) req = Post.new(url) req.form_data = params req.basic_auth url.user, url.password if url.user start(url.hostname, url.port, :use_ssl => url.scheme == 'https' ) {|http| http.request(req) } end |
.Proxy(p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil) ⇒ Object
Creates an HTTP proxy class which behaves like Net::HTTP, but performs all access via the specified proxy.
This class is obsolete. You may pass these same parameters directly to Net::HTTP.new. See Net::HTTP.new for details of the arguments.
1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 |
# File 'lib/net/http.rb', line 1743 def HTTP.Proxy(p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil) #:nodoc: return self unless p_addr Class.new(self) { @is_proxy_class = true if p_addr == :ENV then @proxy_from_env = true @proxy_address = nil @proxy_port = nil else @proxy_from_env = false @proxy_address = p_addr @proxy_port = p_port || default_port end @proxy_user = p_user @proxy_pass = p_pass } end |
.proxy_class? ⇒ Boolean
Returns true if self is a class which was created by HTTP::Proxy.
1766 1767 1768 |
# File 'lib/net/http.rb', line 1766 def proxy_class? defined?(@is_proxy_class) ? @is_proxy_class : false end |
.socket_type ⇒ Object
:nodoc: obsolete
924 925 926 |
# File 'lib/net/http.rb', line 924 def HTTP.socket_type #:nodoc: obsolete BufferedIO end |
.start(address, *arg, &block) ⇒ Object
:call-seq:
HTTP.start(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, opts) -> http
HTTP.start(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, opts) {|http| ... } -> object
Creates a new Net::HTTP object, http
, via Net::HTTP.new:
-
For arguments
address
andport
, see Net::HTTP.new. -
For proxy-defining arguments
p_addr
throughp_pass
, see Proxy Server. -
For argument
opts
, see below.
With no block given:
-
Calls
http.start
with no block (see #start), which opens a TCP connection and HTTP session. -
Returns
http
. -
The caller should call #finish to close the session:
http = Net::HTTP.start(hostname) http.started? # => true http.finish http.started? # => false
With a block given:
-
Calls
http.start
with the block (see #start), which:-
Opens a TCP connection and HTTP session.
-
Calls the block, which may make any number of requests to the host.
-
Closes the HTTP session and TCP connection on block exit.
-
Returns the block’s value
object
.
-
-
Returns
object
.
Example:
hostname = 'jsonplaceholder.typicode.com'
Net::HTTP.start(hostname) do |http|
puts http.get('/todos/1').body
puts http.get('/todos/2').body
end
Output:
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
{
"userId": 1,
"id": 2,
"title": "quis ut nam facilis et officia qui",
"completed": false
}
If the last argument given is a hash, it is the opts
hash, where each key is a method or accessor to be called, and its value is the value to be set.
The keys may include:
-
#ca_file
-
#ca_path
-
#cert
-
#cert_store
-
#ciphers
-
#close_on_empty_response
-
ipaddr
(calls #ipaddr=) -
#keep_alive_timeout
-
#key
-
#open_timeout
-
#read_timeout
-
#ssl_timeout
-
#ssl_version
-
use_ssl
(calls #use_ssl=) -
#verify_callback
-
#verify_depth
-
#verify_mode
-
#write_timeout
Note: If port
is nil
and opts[:use_ssl]
is a truthy value, the value passed to new
is Net::HTTP.https_default_port, not port
.
1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 |
# File 'lib/net/http.rb', line 1014 def HTTP.start(address, *arg, &block) # :yield: +http+ arg.pop if opt = Hash.try_convert(arg[-1]) port, p_addr, p_port, p_user, p_pass = *arg p_addr = :ENV if arg.size < 2 port = https_default_port if !port && opt && opt[:use_ssl] http = new(address, port, p_addr, p_port, p_user, p_pass) http.ipaddr = opt[:ipaddr] if opt && opt[:ipaddr] if opt if opt[:use_ssl] opt = {verify_mode: OpenSSL::SSL::VERIFY_PEER}.update(opt) end http.methods.grep(/\A(\w+)=\z/) do |meth| key = $1.to_sym opt.key?(key) or next http.__send__(meth, opt[key]) end end http.start(&block) end |
.version_1_1? ⇒ Boolean Also known as: is_version_1_1?
Returns false
; retained for compatibility.
750 751 752 |
# File 'lib/net/http.rb', line 750 def HTTP.version_1_1? #:nodoc: false end |
.version_1_2 ⇒ Object
Returns true
; retained for compatibility.
740 741 742 |
# File 'lib/net/http.rb', line 740 def HTTP.version_1_2 true end |
.version_1_2? ⇒ Boolean Also known as: is_version_1_2?
Returns true
; retained for compatibility.
745 746 747 |
# File 'lib/net/http.rb', line 745 def HTTP.version_1_2? true end |
Instance Method Details
#copy(path, initheader = nil) ⇒ Object
2127 2128 2129 |
# File 'lib/net/http.rb', line 2127 def copy(path, initheader = nil) request(Copy.new(path, initheader)) end |
#delete(path, initheader = {'Depth' => 'Infinity'}) ⇒ Object
2101 2102 2103 |
# File 'lib/net/http.rb', line 2101 def delete(path, initheader = {'Depth' => 'Infinity'}) request(Delete.new(path, initheader)) end |
#finish ⇒ Object
1712 1713 1714 1715 |
# File 'lib/net/http.rb', line 1712 def finish raise IOError, 'HTTP session not yet started' unless started? do_finish end |
#get(path, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq:
get(path, initheader = nil) {|res| ... }
Sends a GET request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTP::Get object created from string path
and initial headers hash initheader
.
With a block given, calls the block with the response body:
http = Net::HTTP.new(hostname)
http.get('/todos/1') do |res|
p res
end # => #<Net::HTTPOK 200 OK readbody=true>
Output:
"{\n \"userId\": 1,\n \"id\": 1,\n \"title\": \"delectus aut autem\",\n \"completed\": false\n}"
With no block given, simply returns the response object:
http.get('/') # => #<Net::HTTPOK 200 OK readbody=true>
Related:
-
Net::HTTP::Get: request class for HTTP method GET.
-
Net::HTTP.get: sends GET request, returns response body.
1918 1919 1920 1921 1922 1923 1924 1925 1926 |
# File 'lib/net/http.rb', line 1918 def get(path, initheader = nil, dest = nil, &block) # :yield: +body_segment+ res = nil request(Get.new(path, initheader)) {|r| r.read_body dest, &block res = r } res end |
#head(path, initheader = nil) ⇒ Object
Sends a HEAD request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTP::Head object created from string path
and initial headers hash initheader
:
res = http.head('/todos/1') # => #<Net::HTTPOK 200 OK readbody=true>
res.body # => nil
res.to_hash.take(3)
# =>
[["date", ["Wed, 15 Feb 2023 15:25:42 GMT"]],
["content-type", ["application/json; charset=utf-8"]],
["connection", ["close"]]]
1942 1943 1944 |
# File 'lib/net/http.rb', line 1942 def head(path, initheader = nil) request(Head.new(path, initheader)) end |
#inspect ⇒ Object
1139 1140 1141 |
# File 'lib/net/http.rb', line 1139 def inspect "#<#{self.class} #{@address}:#{@port} open=#{started?}>" end |
#ipaddr ⇒ Object
Returns the IP address for the connection.
If the session has not been started, returns the value set by #ipaddr=, or nil
if it has not been set:
http = Net::HTTP.new(hostname)
http.ipaddr # => nil
http.ipaddr = '172.67.155.76'
http.ipaddr # => "172.67.155.76"
If the session has been started, returns the IP address from the socket:
http = Net::HTTP.new(hostname)
http.start
http.ipaddr # => "172.67.155.76"
http.finish
1278 1279 1280 |
# File 'lib/net/http.rb', line 1278 def ipaddr started? ? @socket.io.peeraddr[3] : @ipaddr end |
#ipaddr=(addr) ⇒ Object
1290 1291 1292 1293 |
# File 'lib/net/http.rb', line 1290 def ipaddr=(addr) raise IOError, "ipaddr value changed, but session already started" if started? @ipaddr = addr end |
#lock(path, body, initheader = nil) ⇒ Object
Sends a LOCK request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTP::Lock object created from string path
, string body
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Net::HTTP.new(hostname)
http.lock('/todos/1', data)
2047 2048 2049 |
# File 'lib/net/http.rb', line 2047 def lock(path, body, initheader = nil) request(Lock.new(path, initheader), body) end |
#mkcol(path, body = nil, initheader = nil) ⇒ Object
Sends a MKCOL request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTP::Mkcol object created from string path
, string body
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http.mkcol('/todos/1', data)
http = Net::HTTP.new(hostname)
2141 2142 2143 |
# File 'lib/net/http.rb', line 2141 def mkcol(path, body = nil, initheader = nil) request(Mkcol.new(path, initheader), body) end |
#move(path, initheader = nil) ⇒ Object
2114 2115 2116 |
# File 'lib/net/http.rb', line 2114 def move(path, initheader = nil) request(Move.new(path, initheader)) end |
#options(path, initheader = nil) ⇒ Object
2074 2075 2076 |
# File 'lib/net/http.rb', line 2074 def (path, initheader = nil) request(Options.new(path, initheader)) end |
#patch(path, data, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq:
patch(path, data, initheader = nil) {|res| ... }
Sends a PATCH request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTP::Patch object created from string path
, string data
, and initial headers hash initheader
.
With a block given, calls the block with the response body:
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Net::HTTP.new(hostname)
http.patch('/todos/1', data) do |res|
p res
end # => #<Net::HTTPOK 200 OK readbody=true>
Output:
"{\n \"userId\": 1,\n \"id\": 1,\n \"title\": \"delectus aut autem\",\n \"completed\": false,\n \"{\\\"userId\\\": 1, \\\"id\\\": 1, \\\"title\\\": \\\"delectus aut autem\\\", \\\"completed\\\": false}\": \"\"\n}"
With no block given, simply returns the response object:
http.patch('/todos/1', data) # => #<Net::HTTPCreated 201 Created readbody=true>
2005 2006 2007 |
# File 'lib/net/http.rb', line 2005 def patch(path, data, initheader = nil, dest = nil, &block) # :yield: +body_segment+ send_entity(path, data, initheader, dest, Patch, &block) end |
#peer_cert ⇒ Object
Returns the X509 certificate chain (an array of strings) for the session’s socket peer, or nil
if none.
1541 1542 1543 1544 1545 1546 |
# File 'lib/net/http.rb', line 1541 def peer_cert if not use_ssl? or not @socket return nil end @socket.io.peer_cert end |
#post(path, data, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq:
post(path, data, initheader = nil) {|res| ... }
Sends a POST request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTP::Post object created from string path
, string data
, and initial headers hash initheader
.
With a block given, calls the block with the response body:
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Net::HTTP.new(hostname)
http.post('/todos', data) do |res|
p res
end # => #<Net::HTTPCreated 201 Created readbody=true>
Output:
"{\n \"{\\\"userId\\\": 1, \\\"id\\\": 1, \\\"title\\\": \\\"delectus aut autem\\\", \\\"completed\\\": false}\": \"\",\n \"id\": 201\n}"
With no block given, simply returns the response object:
http.post('/todos', data) # => #<Net::HTTPCreated 201 Created readbody=true>
Related:
-
Net::HTTP::Post: request class for HTTP method POST.
-
Net::HTTP.post: sends POST request, returns response body.
1976 1977 1978 |
# File 'lib/net/http.rb', line 1976 def post(path, data, initheader = nil, dest = nil, &block) # :yield: +body_segment+ send_entity(path, data, initheader, dest, Post, &block) end |
#propfind(path, body = nil, initheader = {'Depth' => '0'}) ⇒ Object
Sends a PROPFIND request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTP::Propfind object created from string path
, string body
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Net::HTTP.new(hostname)
http.propfind('/todos/1', data)
2088 2089 2090 |
# File 'lib/net/http.rb', line 2088 def propfind(path, body = nil, initheader = {'Depth' => '0'}) request(Propfind.new(path, initheader), body) end |
#proppatch(path, body, initheader = nil) ⇒ Object
Sends a PROPPATCH request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTP::Proppatch object created from string path
, string body
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Net::HTTP.new(hostname)
http.proppatch('/todos/1', data)
2033 2034 2035 |
# File 'lib/net/http.rb', line 2033 def proppatch(path, body, initheader = nil) request(Proppatch.new(path, initheader), body) end |
#proxy? ⇒ Boolean
Returns true
if a proxy server is defined, false
otherwise; see Proxy Server.
1789 1790 1791 |
# File 'lib/net/http.rb', line 1789 def proxy? !!(@proxy_from_env ? proxy_uri : @proxy_address) end |
#proxy_from_env? ⇒ Boolean
Returns true
if the proxy server is defined in the environment, false
otherwise; see Proxy Server.
1796 1797 1798 |
# File 'lib/net/http.rb', line 1796 def proxy_from_env? @proxy_from_env end |
#proxy_uri ⇒ Object
The proxy URI determined from the environment for this connection.
1801 1802 1803 1804 1805 1806 1807 |
# File 'lib/net/http.rb', line 1801 def proxy_uri # :nodoc: return if @proxy_uri == false @proxy_uri ||= URI::HTTP.new( "http", nil, address, port, nil, nil, nil, nil, nil ).find_proxy || false @proxy_uri || nil end |
#put(path, data, initheader = nil) ⇒ Object
Sends a PUT request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTP::Put object created from string path
, string data
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Net::HTTP.new(hostname)
http.put('/todos/1', data) # => #<Net::HTTPOK 200 OK readbody=true>
2019 2020 2021 |
# File 'lib/net/http.rb', line 2019 def put(path, data, initheader = nil) request(Put.new(path, initheader), data) end |
#request(req, body = nil, &block) ⇒ Object
Sends the given request req
to the server; forms the response into a Net::HTTPResponse object.
The given req
must be an instance of a subclass of Net::HTTPRequest. Argument body
should be given only if needed for the request.
With no block given, returns the response object:
http = Net::HTTP.new(hostname)
req = Net::HTTP::Get.new('/todos/1')
http.request(req)
# => #<Net::HTTPOK 200 OK readbody=true>
req = Net::HTTP::Post.new('/todos')
http.request(req, 'xyzzy')
# => #<Net::HTTPCreated 201 Created readbody=true>
With a block given, calls the block with the response and returns the response:
req = Net::HTTP::Get.new('/todos/1')
http.request(req) do |res|
p res
end # => #<Net::HTTPOK 200 OK readbody=true>
Output:
#<Net::HTTPOK 200 OK readbody=false>
2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 |
# File 'lib/net/http.rb', line 2299 def request(req, body = nil, &block) # :yield: +response+ unless started? start { req['connection'] ||= 'close' return request(req, body, &block) } end if proxy_user() req.proxy_basic_auth proxy_user(), proxy_pass() unless use_ssl? end req.set_body_internal body res = transport_request(req, &block) if sspi_auth?(res) sspi_auth(req) res = transport_request(req, &block) end res end |
#request_get(path, initheader = nil, &block) ⇒ Object Also known as: get2
Sends a GET request to the server; forms the response into a Net::HTTPResponse object.
The request is based on the Net::HTTP::Get object created from string path
and initial headers hash initheader
.
With no block given, returns the response object:
http = Net::HTTP.new(hostname)
http.request_get('/todos') # => #<Net::HTTPOK 200 OK readbody=true>
With a block given, calls the block with the response object and returns the response object:
http.request_get('/todos') do |res|
p res
end # => #<Net::HTTPOK 200 OK readbody=true>
Output:
#<Net::HTTPOK 200 OK readbody=false>
2180 2181 2182 |
# File 'lib/net/http.rb', line 2180 def request_get(path, initheader = nil, &block) # :yield: +response+ request(Get.new(path, initheader), &block) end |
#request_head(path, initheader = nil, &block) ⇒ Object Also known as: head2
2193 2194 2195 |
# File 'lib/net/http.rb', line 2193 def request_head(path, initheader = nil, &block) request(Head.new(path, initheader), &block) end |
#request_post(path, data, initheader = nil, &block) ⇒ Object Also known as: post2
Sends a POST request to the server; forms the response into a Net::HTTPResponse object.
The request is based on the Net::HTTP::Post object created from string path
, string data
, and initial headers hash initheader
.
With no block given, returns the response object:
http = Net::HTTP.new(hostname)
http.post('/todos', 'xyzzy')
# => #<Net::HTTPCreated 201 Created readbody=true>
With a block given, calls the block with the response body and returns the response object:
http.post('/todos', 'xyzzy') do |res|
p res
end # => #<Net::HTTPCreated 201 Created readbody=true>
Output:
"{\n \"xyzzy\": \"\",\n \"id\": 201\n}"
2220 2221 2222 |
# File 'lib/net/http.rb', line 2220 def request_post(path, data, initheader = nil, &block) # :yield: +response+ request Post.new(path, initheader), data, &block end |
#request_put(path, data, initheader = nil, &block) ⇒ Object Also known as: put2
Sends a PUT request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTP::Put object created from string path
, string data
, and initial headers hash initheader
.
http = Net::HTTP.new(hostname)
http.put('/todos/1', 'xyzzy')
# => #<Net::HTTPOK 200 OK readbody=true>
2234 2235 2236 |
# File 'lib/net/http.rb', line 2234 def request_put(path, data, initheader = nil, &block) #:nodoc: request Put.new(path, initheader), data, &block end |
#send_request(name, path, data = nil, header = nil) ⇒ Object
Sends an HTTP request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTPRequest object created from string path
, string data
, and initial headers hash header
. That object is an instance of the subclass of Net::HTTPRequest, that corresponds to the given uppercase string name
, which must be an HTTP request method or a WebDAV request method.
Examples:
http = Net::HTTP.new(hostname)
http.send_request('GET', '/todos/1')
# => #<Net::HTTPOK 200 OK readbody=true>
http.send_request('POST', '/todos', 'xyzzy')
# => #<Net::HTTPCreated 201 Created readbody=true>
2263 2264 2265 2266 2267 |
# File 'lib/net/http.rb', line 2263 def send_request(name, path, data = nil, header = nil) has_response_body = name != 'HEAD' r = HTTPGenericRequest.new(name,(data ? true : false),has_response_body,path,header) request r, data end |
#set_debug_output(output) ⇒ Object
WARNING This method opens a serious security hole. Never use this method in production code.
Sets the output stream for debugging:
http = Net::HTTP.new(hostname)
File.open('t.tmp', 'w') do |file|
http.set_debug_output(file)
http.start
http.get('/nosuch/1')
http.finish
end
puts File.read('t.tmp')
Output:
opening connection to jsonplaceholder.typicode.com:80...
opened
<- "GET /nosuch/1 HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: Ruby\r\nHost: jsonplaceholder.typicode.com\r\n\r\n"
-> "HTTP/1.1 404 Not Found\r\n"
-> "Date: Mon, 12 Dec 2022 21:14:11 GMT\r\n"
-> "Content-Type: application/json; charset=utf-8\r\n"
-> "Content-Length: 2\r\n"
-> "Connection: keep-alive\r\n"
-> "X-Powered-By: Express\r\n"
-> "X-Ratelimit-Limit: 1000\r\n"
-> "X-Ratelimit-Remaining: 999\r\n"
-> "X-Ratelimit-Reset: 1670879660\r\n"
-> "Vary: Origin, Accept-Encoding\r\n"
-> "Access-Control-Allow-Credentials: true\r\n"
-> "Cache-Control: max-age=43200\r\n"
-> "Pragma: no-cache\r\n"
-> "Expires: -1\r\n"
-> "X-Content-Type-Options: nosniff\r\n"
-> "Etag: W/\"2-vyGp6PvFo4RvsFtPoIWeCReyIC8\"\r\n"
-> "Via: 1.1 vegur\r\n"
-> "CF-Cache-Status: MISS\r\n"
-> "Server-Timing: cf-q-config;dur=1.3000000762986e-05\r\n"
-> "Report-To: {\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=yOr40jo%2BwS1KHzhTlVpl54beJ5Wx2FcG4gGV0XVrh3X9OlR5q4drUn2dkt5DGO4GDcE%2BVXT7CNgJvGs%2BZleIyMu8CLieFiDIvOviOY3EhHg94m0ZNZgrEdpKD0S85S507l1vsEwEHkoTm%2Ff19SiO\"}],\"group\":\"cf-nel\",\"max_age\":604800}\r\n"
-> "NEL: {\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}\r\n"
-> "Server: cloudflare\r\n"
-> "CF-RAY: 778977dc484ce591-DFW\r\n"
-> "alt-svc: h3=\":443\"; ma=86400, h3-29=\":443\"; ma=86400\r\n"
-> "\r\n"
reading 2 bytes...
-> "{}"
read 2 bytes
Conn keep-alive
1192 1193 1194 1195 |
# File 'lib/net/http.rb', line 1192 def set_debug_output(output) warn 'Net::HTTP#set_debug_output called after HTTP started', uplevel: 1 if started? @debug_output = output end |
#start ⇒ Object
Starts an HTTP session.
Without a block, returns self
:
http = Net::HTTP.new(hostname)
# => #<Net::HTTP jsonplaceholder.typicode.com:80 open=false>
http.start
# => #<Net::HTTP jsonplaceholder.typicode.com:80 open=true>
http.started? # => true
http.finish
With a block, calls the block with self
, finishes the session when the block exits, and returns the block’s value:
http.start do |http|
http
end
# => #<Net::HTTP jsonplaceholder.typicode.com:80 open=false>
http.started? # => false
1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 |
# File 'lib/net/http.rb', line 1569 def start # :yield: http raise IOError, 'HTTP session already opened' if @started if block_given? begin do_start return yield(self) ensure do_finish end end do_start self end |
#started? ⇒ Boolean Also known as: active?
1417 1418 1419 |
# File 'lib/net/http.rb', line 1417 def started? @started end |
#trace(path, initheader = nil) ⇒ Object
2154 2155 2156 |
# File 'lib/net/http.rb', line 2154 def trace(path, initheader = nil) request(Trace.new(path, initheader)) end |
#unlock(path, body, initheader = nil) ⇒ Object
Sends an UNLOCK request to the server; returns an instance of a subclass of Net::HTTPResponse.
The request is based on the Net::HTTP::Unlock object created from string path
, string body
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Net::HTTP.new(hostname)
http.unlock('/todos/1', data)
2061 2062 2063 |
# File 'lib/net/http.rb', line 2061 def unlock(path, body, initheader = nil) request(Unlock.new(path, initheader), body) end |
#use_ssl=(flag) ⇒ Object
Sets whether a new session is to use Transport Layer Security:
Raises IOError if attempting to change during a session.
Raises OpenSSL::SSL::SSLError if the port is not an HTTPS port.
1439 1440 1441 1442 1443 1444 1445 |
# File 'lib/net/http.rb', line 1439 def use_ssl=(flag) flag = flag ? true : false if started? and @use_ssl != flag raise IOError, "use_ssl value changed, but session already started" end @use_ssl = flag end |
#use_ssl? ⇒ Boolean
Returns true
if self
uses SSL, false
otherwise. See Net::HTTP#use_ssl=.
1429 1430 1431 |
# File 'lib/net/http.rb', line 1429 def use_ssl? @use_ssl end |