'Send HTTP request.
Makes sure that `verify_ssl` is respected. Logs request and
response (with headers). For allowed parameters please see
`requests.request`.
:param str method: method for the new `requests.Request` object
:param str url: URL for the new `requests.Request` object
:raises requests.exceptions.RequestException: in case of any problems
:returns: HTTP Response
:rtype: `requests.Response`'

def _send_request(self, method, url, *args, **kwargs):

    if (method == 'POST'):
        logger.debug('Sending    POST    request    to    %s:\n%s', url, kwargs['data'])
    else:
        logger.debug('Sending    %s    request    to    %s.', method, url)
    kwargs['verify'] = self.verify_ssl
    kwargs.setdefault('headers', {})
    kwargs['headers'].setdefault('User-Agent', self.user_agent)
    kwargs.setdefault('timeout', self._default_timeout)
    response = self.session.request(method, url, *args, **kwargs)
    if (response.headers.get('Content-Type') == DER_CONTENT_TYPE):
        debug_content = base64.b64encode(response.content)
    else:
        debug_content = response.content
    logger.debug('Received    response:\nHTTP    %d\n%s\n\n%s', response.status_code, '\n'.join(['{0}:    {1}'.format(k, v) for (k, v) in response.headers.items()]), debug_content)
    return response
