はじめに
retrofitを最近触り始めたのですが、
エラーハンドリングがうまくできず…
皆さんのお力を貸していただければ幸いです。
内容
###やりたいこと
エラーレスポンスが返ってきた際も201などと同様に、「null」ではなく、レスポンスとして返した内容(Object)を埋め込みたい
現状
バックエンドからエラーステータス(今回は「409」)を返しており、
Client側でもエラーステータスを正しく受けとるが、レスポンスボディに「null」が埋め込まれている(Response.java)。
※rawResponse, body, errorBody)の中の”body”が該当
・rawResponseはここでは気にしない
・errorBodyは正しいものが表示される
※retrofit2公式Github:https://github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit2/Response.java
下記↓今回使用したInterface.java
Interface.java
1@POST("/api/family/{family_id}/menber/{member_id}) 2Observable<Menber> postMenber(@Header("Authorization") String token, 3 @Path(value = "family_id") String FamilyID, 4 @Path(value = "member_id") String MenberID, 5 @Body Member member);
下記↓上記Interface使用箇所
Activity.java
1Response<Menber> resPostMenber = postMenber(fragment.sessionManager.getJwtToken(), 2 family_id, 3 member_id, 4 requestMenber) 5 .execute();
おそらく、retrofit2の下記仕様により、現在の事象が起きてしまっている(?)と思われるのですが
なにか対応できる方法がないか探しています。
- status >= 400の場合、一律bodyをnullで返す
もしご存知であればご教示いただけますと幸いです。
あなたの回答
tips
プレビュー