Skip to content

Maintenance Ruby 3.4 gets fixes, but no new features. Switch to Ruby 4.0 →

class method

Net::HTTPSession.start

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 and port, see Net::HTTP.new.

  • For proxy-defining arguments p_addr through p_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:

    Example
    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:

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:

Example
{
  "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:

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.