From f2c9663e6f3d2dcba35134cfcf9f6e114887aaf2 Mon Sep 17 00:00:00 2001 From: Liu Zhen Date: Fri, 20 Mar 2026 15:12:10 +0800 Subject: [PATCH 1/2] Add JSON parsing to Response class initialization --- volcenginesdkcore/interceptor/interceptors/response.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/volcenginesdkcore/interceptor/interceptors/response.py b/volcenginesdkcore/interceptor/interceptors/response.py index ae1e31e7c..a7d2426da 100644 --- a/volcenginesdkcore/interceptor/interceptors/response.py +++ b/volcenginesdkcore/interceptor/interceptors/response.py @@ -1,5 +1,12 @@ +import json class Response: def __init__(self, http_response): self.http_response = http_response self.result = None self.metadata = None + self.__post_init__() + + def __post_init__(self): + data = json.loads(self.http_response.data) + self.result = data.get("Result") + self.metadata = data.get("ResponseMetadata") From f9f5b4fef7bb17fd48806fa235428de218474876 Mon Sep 17 00:00:00 2001 From: Liu Zhen Date: Sat, 21 Mar 2026 08:58:33 +0800 Subject: [PATCH 2/2] Update volcenginesdkcore/interceptor/interceptors/response.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../interceptor/interceptors/response.py | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/volcenginesdkcore/interceptor/interceptors/response.py b/volcenginesdkcore/interceptor/interceptors/response.py index a7d2426da..4e0df3567 100644 --- a/volcenginesdkcore/interceptor/interceptors/response.py +++ b/volcenginesdkcore/interceptor/interceptors/response.py @@ -7,6 +7,28 @@ def __init__(self, http_response): self.__post_init__() def __post_init__(self): - data = json.loads(self.http_response.data) - self.result = data.get("Result") - self.metadata = data.get("ResponseMetadata") + data = getattr(self.http_response, "data", None) + if data is None: + return + + # If data is bytes-like, attempt to decode to text before JSON parsing. + if isinstance(data, (bytes, bytearray)): + try: + data = data.decode("utf-8") + except Exception: + # Non-textual or undecodable data; leave result/metadata as None. + return + + # Only attempt JSON parsing on string data. + if not isinstance(data, str): + return + + try: + parsed = json.loads(data) + except (ValueError, TypeError): + # Invalid JSON content; leave result/metadata as None. + return + + if isinstance(parsed, dict): + self.result = parsed.get("Result") + self.metadata = parsed.get("ResponseMetadata")