# Net::HTTPResponse (Class)

In: | net/http.rb
Parent: | Object

HTTP response class. This class wraps response header and entity. Mixes in the HTTPHeader module, which provides access to response header values both via hash-like methods and individual readers. Note that each possible HTTP response code defines its own HTTPResponse subclass. These are listed below. All classes are defined under the Net module. Indentation indicates inheritance.

      xxx        HTTPResponse

        1xx        HTTPInformation
          100        HTTPContinue
          101        HTTPSwitchProtocol

        2xx        HTTPSuccess
          200        HTTPOK
          201        HTTPCreated
          202        HTTPAccepted
          203        HTTPNonAuthoritativeInformation
          204        HTTPNoContent
          205        HTTPResetContent
          206        HTTPPartialContent

        3xx        HTTPRedirection
          300        HTTPMultipleChoice
          301        HTTPMovedPermanently
          302        HTTPFound
          303        HTTPSeeOther
          304        HTTPNotModified
          305        HTTPUseProxy
          307        HTTPTemporaryRedirect

        4xx        HTTPClientError
          400        HTTPBadRequest
          401        HTTPUnauthorized
          402        HTTPPaymentRequired
          403        HTTPForbidden
          404        HTTPNotFound
          405        HTTPMethodNotAllowed
          406        HTTPNotAcceptable
          407        HTTPProxyAuthenticationRequired
          408        HTTPRequestTimeOut
          409        HTTPConflict
          410        HTTPGone
          411        HTTPLengthRequired
          412        HTTPPreconditionFailed
          413        HTTPRequestEntityTooLarge
          414        HTTPRequestURITooLong
          415        HTTPUnsupportedMediaType
          416        HTTPRequestedRangeNotSatisfiable
          417        HTTPExpectationFailed

        5xx        HTTPServerError
          500        HTTPInternalServerError
          501        HTTPNotImplemented
          502        HTTPBadGateway
          503        HTTPServiceUnavailable
          504        HTTPGatewayTimeOut
          505        HTTPVersionNotSupported

        xxx        HTTPUnknownResponse

## Methods

body body_permitted? entity inspect read_body to_ary value

## Constants

CODE_CLASS_TO_OBJ | = | { '1' => HTTPInformation, '2' => HTTPSuccess, '3' => HTTPRedirection, '4' => HTTPClientError, '5' => HTTPServerError
CODE_TO_OBJ | = | { '100' => HTTPContinue, '101' => HTTPSwitchProtocol, '200' => HTTPOK, '201' => HTTPCreated, '202' => HTTPAccepted, '203' => HTTPNonAuthoritativeInformation, '204' => HTTPNoContent, '205' => HTTPResetContent, '206' => HTTPPartialContent, '300' => HTTPMultipleChoice, '301' => HTTPMovedPermanently, '302' => HTTPFound, '303' => HTTPSeeOther, '304' => HTTPNotModified, '305' => HTTPUseProxy, '307' => HTTPTemporaryRedirect, '400' => HTTPBadRequest, '401' => HTTPUnauthorized, '402' => HTTPPaymentRequired, '403' => HTTPForbidden, '404' => HTTPNotFound, '405' => HTTPMethodNotAllowed, '406' => HTTPNotAcceptable, '407' => HTTPProxyAuthenticationRequired, '408' => HTTPRequestTimeOut, '409' => HTTPConflict, '410' => HTTPGone, '411' => HTTPLengthRequired, '412' => HTTPPreconditionFailed, '413' => HTTPRequestEntityTooLarge, '414' => HTTPRequestURITooLong, '415' => HTTPUnsupportedMediaType, '416' => HTTPRequestedRangeNotSatisfiable, '417' => HTTPExpectationFailed, '501' => HTTPInternalServerError, '501' => HTTPNotImplemented, '502' => HTTPBadGateway, '503' => HTTPServiceUnavailable, '504' => HTTPGatewayTimeOut, '505' => HTTPVersionNotSupported

## External Aliases

message -> msg
response -> header
response -> read_header

## Attributes

code | [R] | HTTP result code string. For example, ‘302’. You can also determine the response type by which response subclass the response object is an instance of.
http_version | [R] | The HTTP version supported by the server.
message | [R] | HTTP result message. For example, ‘Not Found’.

## Included Modules

HTTPHeader

## Public Class methods

body_permitted?()

true if the reponse has body.

[Source]

    # File net/http.rb, line 1318
        def HTTPResponse.body_permitted?
          self::HAS_BODY
        end

## Public Instance methods

inspect()

[Source]

    # File net/http.rb, line 1613
        def inspect
          "#<#{self.class} #{@code} readbody=#{@read}>"
        end

to_ary()

For backward compatibility. To allow Net::HTTP 1.1 style assignment e.g.

       response, body = Net::HTTP.get(....)

[Source]

    # File net/http.rb, line 1622
        def to_ary
          warn "net/http.rb: warning: Net::HTTP v1.1 style assignment found at #{caller(1)[0]}; use `response = http.get(...)' instead." if $VERBOSE
          [self, body()]
        end

value()

Raises HTTP error if the response is not 2xx.

[Source]

    # File net/http.rb, line 1644
        def value
          error! unless HTTPSuccess === self
        end

read_body( dest = nil, &block )

Gets entity body. If the block given, yields it to `block`. The body is provided in fragments, as it is read in from the socket.

Calling this method a second or subsequent time will return the already read string.

      http.request_get('/index.html') {|res|
        puts res.read_body
      }

      http.request_get('/index.html') {|res|
        p res.read_body.object_id   # 538149362
        p res.read_body.object_id   # 538149362
      }

      # using iterator
      http.request_get('/index.html') {|res|
        res.read_body do |segment|
          print segment
        end
      }

[Source]

    # File net/http.rb, line 1696
        def read_body( dest = nil, &block )
          if @read
            raise IOError, "#{self.class}\#read_body called twice" if dest or block
            return @body
          end

          to = procdest(dest, block)
          stream_check
          if @body_exist
            read_body_0 to
            @body = to
          else
            @body = nil
          end
          @read = true

          @body
        end

body()

Returns the entity body.

Calling this method a second or subsequent time will return the already read string.

      http.request_get('/index.html') {|res|
        puts res.body
      }

      http.request_get('/index.html') {|res|
        p res.body.object_id   # 538149362
        p res.body.object_id   # 538149362
      }

[Source]

    # File net/http.rb, line 1729
        def body
          read_body()
        end

entity()

Alias for body

[Validate]