<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _submit_request(self, url, params=None, data=None, headers=None, method="GET"):
 """Submits the given request, and handles the errors appropriately. Args: url (str):
 the request to send. params (dict):
 params to be passed along to get/post data (bytes):
 the data to include in the request. headers (dict):
 the headers to include in the request. method (str):
 the method to use for the request, "POST" or "GET". Returns: tuple of (int, str):
 The response status code and the json parsed body, or the error message. Raises: `CliException`: If any issues occur with the URL. """

        if headers is None:
            headers = {}

        if self._auth_header is not None:
            headers['Authorization'] = self._auth_header

        try:
            if method == 'POST':
                result = requests.post(
                    url, params=params, data=data, headers=headers)
            elif method == 'GET':
                result = requests.get(
                    url, params=params, data=data, headers=headers)
            result.raise_for_status()
            return (result.status_code, result.json())
        except requests.exceptions.HTTPError as e:
            return (e.response.status_code, e.response.reason)
        except RemoteDisconnected as e:
            raise CliException(e)
        except (requests.exceptions.MissingSchema,
                requests.exceptions.InvalidURL) as e:
            raise CliException(e)
        except requests.exceptions.ConnectionError as e:
            raise CliException(
                ('Unable to connect to "{}": '
                 'make sure URL is correct').format(self._base_url))