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