diff --git a/openapi_core/contrib/requests/requests.py b/openapi_core/contrib/requests/requests.py index 00a462f5..c39110cc 100644 --- a/openapi_core/contrib/requests/requests.py +++ b/openapi_core/contrib/requests/requests.py @@ -68,7 +68,10 @@ def body(self) -> Optional[str]: if self.request.body is None: return None if isinstance(self.request.body, bytes): - return self.request.body.decode("utf-8") + try: + return self.request.body.decode("utf-8") + except UnicodeDecodeError: + return self.request.body assert isinstance(self.request.body, str) # TODO: figure out if request._body_position is relevant return self.request.body diff --git a/openapi_core/contrib/requests/responses.py b/openapi_core/contrib/requests/responses.py index 66343802..f31e2ee5 100644 --- a/openapi_core/contrib/requests/responses.py +++ b/openapi_core/contrib/requests/responses.py @@ -12,7 +12,10 @@ def __init__(self, response: Response): @property def data(self) -> str: assert isinstance(self.response.content, bytes) - return self.response.content.decode("utf-8") + try: + return self.response.content.decode("utf-8") + except UnicodeDecodeError: + return self.response.content @property def status_code(self) -> int: