-
Notifications
You must be signed in to change notification settings - Fork 101
Open
Description
在API返回非200状态码(如权限问题、QPS超限等场景)时,SDK会将RawResponse反序列化为Resp类,以获取错误信息。
但继承BaseResponse<ByteArrayOutputStream>的Resp类(主要见于文件下载类API),由于其data字段的类型为ByteArrayOutputStream,在jdk17进行反序列化时,gson会抛出InaccessibleObjectException(因为ByteArrayOutputStream存在非public字段buf和count),导致程序无法正确获取API返回的code和msg
ByteArrayOutputStream本身其实不具备反序列化的可能性,SDK应当在处理此类数据时避免反序列化Resp类的data字段
举例:
GetMessageResourceResp类
Line 29 in 4ec09ba
| public class GetMessageResourceResp extends BaseResponse<ByteArrayOutputStream> { |
MessageResource类中对GetMessageResourceResp的反序列化操作
oapi-sdk-java/larksuite-oapi/src/main/java/com/lark/oapi/service/im/v1/resource/MessageResource.java
Line 123 in 4ec09ba
| GetMessageResourceResp resp = UnmarshalRespUtil.unmarshalResp(httpResponse, GetMessageResourceResp.class); |
Metadata
Metadata
Assignees
Labels
No labels