diff --git a/lib/httparty/request.rb b/lib/httparty/request.rb index 8ae0878..b2a7bfd 100644 --- a/lib/httparty/request.rb +++ b/lib/httparty/request.rb @@ -70,6 +70,7 @@ module HTTParty def perform(&block) validate setup_raw_request + chunked_body = nil self.last_response = http.request(@raw_request) do |http_response| if block @@ -80,12 +81,12 @@ module HTTParty block.call(fragment) end - http_response.body = chunks.join + chunked_body = chunks.join end end handle_deflation - handle_response + handle_response(chunked_body) end private @@ -196,7 +197,7 @@ module HTTParty query_string_parts.size > 0 ? query_string_parts.join('&') : nil end - def handle_response + def handle_response(body) if response_redirects? options[:limit] -= 1 self.path = last_response['location'] @@ -205,7 +206,8 @@ module HTTParty capture_cookies(last_response) perform else - Response.new(self, last_response, parse_response(last_response.body)) + body = body || last_response.body + Response.new(self, last_response, parse_response(body), :body => body) end end diff --git a/lib/httparty/response.rb b/lib/httparty/response.rb index a73113b..d090a1d 100644 --- a/lib/httparty/response.rb +++ b/lib/httparty/response.rb @@ -35,12 +35,12 @@ module HTTParty attr_reader :request, :response, :parsed_response, :body, :headers - def initialize(request, response, parsed_response) - @request = request - @response = response - @body = response.body + def initialize(request, response, parsed_response, options={}) + @request = request + @response = response + @body = response.body || options[:body] @parsed_response = parsed_response - @headers = Headers.new(response.to_hash) + @headers = Headers.new(response.to_hash) end def class