Class | Net::HTTPResponse
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

### Included Modules

HTTPHeader

### 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

### 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’.

### Public Class methods

body_permitted?()

true if the response has body.

[Source]

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

### Public Instance methods

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 2165
        def body
          read_body()
        end

entity()

Alias for body

inspect()

[Source]

    # File net/http.rb, line 2038
        def inspect
          "#<#{self.class} #{@code} #{@message} readbody=#{@read}>"
        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 2133
        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

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 2047
        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
          res = self.dup
          class << res
            undef to_ary
          end
          [res, res.body]
        end

value()

Raises HTTP error if the response is not 2xx.

[Source]

    # File net/http.rb, line 2073
        def value
          error! unless self.kind_of?(HTTPSuccess)
        end

[Validate]