继承BaseResponse<ByteArrayOutputStream>的Resp类在反序列化时产生InaccessibleObjectException
还没有人认领这个 Issue。
评估
调研方向
从 GetMessageResourceResp.java 和 MessageResource.java 中第 123 行附近的反序列化代码开始,然后跟踪在 JDK 17 下非 200 响应中 RawResponse 如何变为 Resp。重现 InaccessibleObjectException,并验证无需对 ByteArrayOutputStream 数据字段进行反序列化即可获取响应代码和消息。
由索引模型根据 Issue 内容生成。
描述
在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类
https://github.com/larksuite/oapi-sdk-java/blob/4ec09ba4918b5907c17aebd5f95f604e69ea6cc8/larksuite-oapi/src/main/java/com/lark/oapi/service/im/v1/model/GetMessageResourceResp.java#L29
MessageResource类中对GetMessageResourceResp的反序列化操作
https://github.com/larksuite/oapi-sdk-java/blob/4ec09ba4918b5907c17aebd5f95f604e69ea6cc8/larksuite-oapi/src/main/java/com/lark/oapi/service/im/v1/resource/MessageResource.java#L123
- 主要语言
- Java
- 星标
- 313
- 派生
- 115
- 平均合并
- 19 分钟
- 30 天内合并 PR
- 2
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
larksuite/oapi-sdk-java 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
larksuite/oapi-sdk-java#197 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
larksuite/oapi-sdk-java#196 ·
-
sdk提供的新增、更新人才接口代码和飞书招聘的接口不一致,导致接口调用失败,返回报错是类型转换失败可能已有人在做 @CharLilis 于 85 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 72/100
larksuite/oapi-sdk-java#191 ·
-
难度 1/5 1 小时以内 新手友好度 82/100
larksuite/oapi-sdk-java#149 ·
-
接口响应类型错误未关闭
难度 2/5 1-3 小时 新手友好度 62/100
larksuite/oapi-sdk-java#79 ·
查看 larksuite/oapi-sdk-java 的全部 Issue
相似的 Issue
-
[Bug] dubbo.protocol.triple.max-message-size is only read from OS environment variables可能已有人在做 @CCCLL 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 64/100
hierynomus/sshj#1070 ·
-
难度 2/5 1-3 小时 新手友好度 84/100
intellij-elixir/intellij-elixir#4492 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
quarkiverse/quarkus-openapi-generator#1796 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 66/100
quarkiverse/quarkus-jooq#324 ·
维护者通常 1 天内回复