def request(self, method: str, path: str, *, query_params: Optional[Dict[(str, Any)]]=None, data: Union[(None, Dict[(str, Any)], utils.PayloadWrapper)]=None, headers: Optional[Dict[(str, str)]]=None, encoding: Optional[str]=None) -> GlobusHTTPResponse:
    '\n        Send an HTTP request\n\n        :param method: HTTP request method, as an all caps string\n        :type method: str\n        :param path: Path for the request, with or without leading slash\n        :type path: str\n        :param query_params: Parameters to be encoded as a query string\n        :type query_params: dict, optional\n        :param headers: HTTP headers to add to the request\n        :type headers: dict\n        :param data: Data to send as the request body. May pass through encoding.\n        :type data: dict or str\n        :param encoding: A way to encode request data. "json", "form", and "text"\n            are all valid values. Custom encodings can be used only if they are\n            registered with the transport. By default, strings get "text" behavior and\n            all other objects get "json".\n        :type encoding: str\n\n        :return: :class:`GlobusHTTPResponse         <globus_sdk.response.GlobusHTTPResponse>` object\n        '
    rheaders = ({**headers} if headers else {})
    if (path.startswith('https://') or path.startswith('http://')):
        url = path
    else:
        url = utils.slash_join(self.base_url, urllib.parse.quote(path))
    log.debug('request will hit URL: %s', url)
    r = self.transport.request(method=method, url=url, data=(data.data if isinstance(data, utils.PayloadWrapper) else data), query_params=query_params, headers=rheaders, encoding=encoding, authorizer=self.authorizer)
    log.debug('request made to URL: %s', r.url)
    if (200 <= r.status_code < 400):
        log.debug(f'request completed with response code: {r.status_code}')
        return GlobusHTTPResponse(r, self)
    log.debug(f'request completed with (error) response code: {r.status_code}')
    raise self.error_class(r)
Send an HTTP request

:param method: HTTP request method, as an all caps string
:type method: str
:param path: Path for the request, with or without leading slash
:type path: str
:param query_params: Parameters to be encoded as a query string
:type query_params: dict, optional
:param headers: HTTP headers to add to the request
:type headers: dict
:param data: Data to send as the request body. May pass through encoding.
:type data: dict or str
:param encoding: A way to encode request data. "json", "form", and "text"
    are all valid values. Custom encodings can be used only if they are
    registered with the transport. By default, strings get "text" behavior and
    all other objects get "json".
:type encoding: str

:return: :class:`GlobusHTTPResponse         <globus_sdk.response.GlobusHTTPResponse>` object
def request(self, method: str, path: str, *, query_params: Optional[Dict[(str, Any)]]=None, data: Union[(None, Dict[(str, Any)], utils.PayloadWrapper)]=None, headers: Optional[Dict[(str, str)]]=None, encoding: Optional[str]=None) -> GlobusHTTPResponse:
    '\n        Send an HTTP request\n\n        :param method: HTTP request method, as an all caps string\n        :type method: str\n        :param path: Path for the request, with or without leading slash\n        :type path: str\n        :param query_params: Parameters to be encoded as a query string\n        :type query_params: dict, optional\n        :param headers: HTTP headers to add to the request\n        :type headers: dict\n        :param data: Data to send as the request body. May pass through encoding.\n        :type data: dict or str\n        :param encoding: A way to encode request data. "json", "form", and "text"\n            are all valid values. Custom encodings can be used only if they are\n            registered with the transport. By default, strings get "text" behavior and\n            all other objects get "json".\n        :type encoding: str\n\n        :return: :class:`GlobusHTTPResponse         <globus_sdk.response.GlobusHTTPResponse>` object\n        '
    rheaders = ({**headers} if headers else {})
    if (path.startswith('https://') or path.startswith('http://')):
        url = path
    else:
        url = utils.slash_join(self.base_url, urllib.parse.quote(path))
    log.debug('request will hit URL: %s', url)
    r = self.transport.request(method=method, url=url, data=(data.data if isinstance(data, utils.PayloadWrapper) else data), query_params=query_params, headers=rheaders, encoding=encoding, authorizer=self.authorizer)
    log.debug('request made to URL: %s', r.url)
    if (200 <= r.status_code < 400):
        log.debug(f'request completed with response code: {r.status_code}')
        return GlobusHTTPResponse(r, self)
    log.debug(f'request completed with (error) response code: {r.status_code}')
    raise self.error_class(r)