レスポンスが成功しなくても、同じJavaオブジェクトに対するネットワークレスポンスをデシリアライズできます。現在403のようなエラーレスポンスが返ってくると、レスポンスボディはnullになり、返されたものを読むためにresponse.errorBody()メソッドを使用することが期待されます。これは問題ありません。しかし、私はerrorBodyを直列化解除するために、改造コールバックに多くのコードを書くことを避けたい。代わりに、errorBodyの内容を本文に設定するインターセプタを用意したいと思います。Retrofit2レスポンスが200でない場合でもレスポンス本体をデシリアライズする
この理由は、私はエラーと非エラー応答の両方のフィールドを持っていると応答の状況に応じて、いくつかのフィールドがヌル例えば
エラーレスポンスJSONを残されることが期待されるレスポンスオブジェクトを持っているということです
{
"locked":true,
"remaining_attempts": 2
}
成功レスポンス、私は両方のシナリオをキャプチャする単一のJavaオブジェクトを作成した
{
"name":"kev"
"token":"abcdefghijklmnopq"
}
JSON:
class LoginResponse{
@Expose
private String name;
@Expose
private String token;
@Expose
private Boolean locked;
@Expose
private Integer remaining_attempts;
}
インターセプタでこれを行う方法はありますか?
は、私は同様の問題を抱えていたし、検索した後、私は解決策がデフォルト改修コンバータを拡張するカスタム 'ConverterFactory'を書くことであることを発見しました。 –
@MohamedIbrahimどのリンク? – kev
私はより詳しい情報を投稿します@kev –