안드로이드에서 예외 처리를 해주지 않으면 애플리케이션이 죽어버리기 때문에 예외 처리는 꼭 해줘야 한다.
근데 자꾸 응답 코드는 실패로 들어오는데, response가 성공으로 처리되어서 한 시간동안 헤맸다...
▼ 처음 코드
class PostNewClubService(val newClubInterface: PostNewClubInterface){
private val retrofit: GroupRetrofit = ApplicationClass.sRetrofit.create(GroupRetrofit::class.java)
fun tryPostNewClub(clubInfo: GroupNewRequest){
retrofit.postNewClubReq(clubInfo).enqueue(object : Callback<BaseResponse>{
override fun onResponse(call: Call<BaseResponse>, response: Response<BaseResponse>) {
if(response.isSuccessful){ // response.code() == 200
newClubInterface.onPostNewClubSuccess()
} else {
newClubInterface.onPostNewClubFailure(response.message())
}
}
override fun onFailure(call: Call<BaseResponse>, t: Throwable) {
Log.d("postNewClubReq", "failure")
t.printStackTrace()
newClubInterface.onPostNewClubFailure(t.message ?: "통신 오류")
}
})
}
}
여기저기 열심히 로그도 찍어보고 스웨거도 계속 보고 하다가 원인을 발견했다.
통신 자체는 성공적이어서 response는 성공으로 처리되고, body가 실패로 처리된다는 것!!!
▼ 고친 코드
class PostNewClubService(val newClubInterface: PostNewClubInterface){
private val retrofit: GroupRetrofit = ApplicationClass.sRetrofit.create(GroupRetrofit::class.java)
fun tryPostNewClub(clubInfo: GroupNewRequest){
retrofit.postNewClubReq(clubInfo).enqueue(object : Callback<BaseResponse>{
override fun onResponse(call: Call<BaseResponse>, response: Response<BaseResponse>) {
if(response.isSuccessful){
if (response.body()?.isSuccess == true) {
newClubInterface.onPostNewClubSuccess()
} else {
newClubInterface.onPostNewClubFailure(response.body()?.message.toString())
}
} else {
newClubInterface.onPostNewClubFailure(response.message())
}
}
override fun onFailure(call: Call<BaseResponse>, t: Throwable) {
Log.d("postNewClubReq", "failure")
t.printStackTrace()
newClubInterface.onPostNewClubFailure(t.message ?: "통신 오류")
}
})
}
}
이렇게 하면 해결된다!
이제 메인 코드에서 예외 처리 해주면 된다. 😊
'* > Android' 카테고리의 다른 글
[안드로이드] AWS Rekognition API 사용하기 (1) | 2023.04.08 |
---|---|
[안드로이드] 디자인 패턴 정리 (MVC, MVP, MVVM) (0) | 2023.03.09 |
[안드로이드] 가로 달력 커스텀 (SingleRowCalendar) (0) | 2023.03.08 |
[안드로이드] Activity, Fragment LifeCycle (0) | 2023.03.06 |
[안드로이드] 앱 목록에서 아이콘 안 보일 때 (0) | 2023.02.19 |