继承BaseResponse<ByteArrayOutputStream>的Resp类在反序列化时产生InaccessibleObjectException
まだ誰も着手していません。
評価
調査の方向性
GetMessageResourceResp.java と、123 行目付近の MessageResource.java のデシリアライズコードから始め、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
- スター
- 311
- フォーク
- 115
- 平均マージ
- 19分
- マージ済み PR(30日)
- 2
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- 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 が 80 日前に担当しました。 オープン
難易度 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
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
bug new windows
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
GantMan/jail-monkey#380 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
objectionary/jucs#145 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
objectionary/lints#1559 ·
メンテナーはふだん 2 日以内に返信