# File lib/restclient/request.rb, line 105
                def transmit(uri, req, payload)
                        setup_credentials(req)

                        net = net_http_class.new(uri.host, uri.port)
                        net.use_ssl = uri.is_a?(URI::HTTPS)
                        if @verify_ssl == false
        net.verify_mode = OpenSSL::SSL::VERIFY_NONE
      elsif @verify_ssl.is_a? Integer
        net.verify_mode = @verify_ssl
      end
                        net.cert = @ssl_client_cert if @ssl_client_cert
                        net.key = @ssl_client_key if @ssl_client_key
                        net.ca_file = @ssl_ca_file if @ssl_ca_file
                        net.read_timeout = @timeout if @timeout
                        net.open_timeout = @open_timeout if @open_timeout

                        display_log request_log

                        net.start do |http|
                                res = http.request(req, payload) { |http_response| fetch_body(http_response) }
                                result = process_result(res)
                                display_log response_log(res)

                                if result.kind_of?(String) or @method == :head
                                        Response.new(result, res)
                                elsif @raw_response
                                        RawResponse.new(@tf, res)
                                else
                                        nil
                                end
                        end
                rescue EOFError
                        raise RestClient::ServerBrokeConnection
                rescue Timeout::Error
                        raise RestClient::RequestTimeout
                end