Method: Net::HTTP.start
- Defined in:
- lib/net/http.rb
.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
.
1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 |
# File 'lib/net/http.rb', line 1045 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 |