diff --git a/redcap/request.py b/redcap/request.py index 50ff46d..2460536 100644 --- a/redcap/request.py +++ b/redcap/request.py @@ -16,7 +16,7 @@ overload, ) -from requests import RequestException, Response, Session +from requests import RequestException, Response, Session, JSONDecodeError if TYPE_CHECKING: from io import TextIOWrapper @@ -150,7 +150,10 @@ def get_content( return [{}] if format_type == "json": - return response.json() + try: + return response.json() + except JSONDecodeError as jde: + raise RedcapError("Unable to decode response as JSON") from jde # don't do anything to csv/xml strings return response.text @@ -186,6 +189,9 @@ def execute( self.url, data=self.payload, verify=verify_ssl, files=file, **kwargs ) + if response.status_code == 500: + raise RedcapError(f"HTTP error 500 {response.reason}") + content = self.get_content( response, format_type=self.fmt,