Make the connection. Return a file-like object.

def get_file_object(username, password, utc_start=None, utc_stop=None):
    """Make the connection. Return a file-like object."""

    if not utc_start:
        utc_start = datetime.now()

    if not utc_stop:
        utc_stop = utc_start + timedelta(days=1)

    logging.info("Downloading schedules for username [%s] in range [%s] to "
                 "[%s]." % (username, utc_start, utc_stop))

    replacements = {'start_time': utc_start.strftime('%Y-%m-%dT%H:%M:%SZ'), 
                    'stop_time':  utc_stop.strftime('%Y-%m-%dT%H:%M:%SZ')}
    
    soap_message_xml = (soap_message_xml_template % replacements)

    authinfo = urllib2.HTTPDigestAuthHandler()
    authinfo.add_password(realm, url, username, password)

    try:
        request = urllib2.Request(url, soap_message_xml, request_headers)
        response = urllib2.build_opener(authinfo).open(request)

        if response.headers['Content-Encoding'] == 'gzip':
            response = GzipStream(response)
    except:
        logging.exception("Could not acquire connection to Schedules Direct.")
        raise

    return response