def _do_call(self, http_method, url, parameters, auth_handlers,
            content_type, parse_json):

        headers, auth_params = HttpUtils.handle_authentication(auth_handlers)
        parameters.update(auth_params)
        if parse_json:
            headers["Accept"] = "application/json"

        headers.update(UrlUtils.generate_client_headers())

        data = None
        opener = HttpUtils.get_http_opener(content_type)
        if (http_method == "GET"):
            url = UrlUtils.build_url_with_query_string(url, parameters)
        else:
            data, additional_headers = HttpUtils.build_data_for_content_type(
                    content_type, parameters, headers)
            headers.update(additional_headers)

        request = urllib2.Request(url, data, headers)
        request.get_method = lambda: http_method
        try:
            response = opener.open(request)
        except urllib2.HTTPError, e:
            if e.getcode() == 500:
                response = e
            else:
                import sys
                raise MashapeClientException("Error executing the request "
                    + str(sys.exc_info()[1]))