기본구조

val accountService = RetrofitImpl.getApiClient().create(AccountsService::class.java)
                    accountService.sendEmail(emailF).enqueue(object : Callback<BaseResponse> {
                        override fun onResponse(call: Call<BaseResponse>, response: Response<BaseResponse>) {
                            if(response.isSuccessful){
                                // 정상적으로 통신이 성공된 경우
                                Log.d("post", "onResponse 성공: " + response.body().toString());
                                Toast.makeText(this@LoginFindPwActivity, "이메일이 전송되었습니다.", Toast.LENGTH_SHORT).show()
                                returnCode= response.body()?.result.toString()
                            }else{
                                // 통신이 실패한 경우(응답코드 3xx, 4xx 등)
                                Log.d("post", "onResponse 실패")
                            }
                        }

                        override fun onFailure(call: Call<BaseResponse>, t: Throwable) {
                            // 통신 실패 (인터넷 끊킴, 예외 발생 등 시스템적인 이유)
                            Log.d("post", "onFailure 에러: " + t.message.toString());
                        }
                    })

회원가입 예외처리 (+토스트)

val service= RetrofitImpl.getApiClientWithOutToken().create(AccountsService::class.java)
service.signupCheckValidation(SignupValidatoinRequest(email,name,pw)).enqueue(object: Callback<BaseResponse> {
    override fun onResponse(call: Call<BaseResponse>, response: Response<BaseResponse>) {
        if(response.isSuccessful){
            when(response.body()?.code){
              1000 -> {
                  Log.d("post", "onResponse 성공: " + response.body().toString());
                  Toast.makeText(this@SignupActivity, response.body()!!.message, Toast.LENGTH_SHORT).show()
                  startActivity(intent)  // 화면 전환을 시켜줌
                  finish()
              }
              else -> {
                  Log.d("post", "onResponse 오류: " + response.body().toString());
                  Toast.makeText(this@SignupActivity, response.body()!!.message, Toast.LENGTH_SHORT).show()
              }
            }
            // 정상적으로 통신이 성공된 경우

        }else{
            // 통신이 실패한 경우(응답코드 3xx, 4xx 등)
            Log.d("post", "onResponse 실패")
            Toast.makeText(this@SignupActivity, response.body()!!.message, Toast.LENGTH_LONG).show()
        }
    }
    override fun onFailure(call: Call<BaseResponse>, t: Throwable) {
        Log.d("post", "onFailure 에러: " + t.message.toString());
    }
})
val service= getApiClientWithOutToken().create(AccountsService::class.java)
            service.logIn(loginRequest).enqueue(object: Callback<LoginResponse> {
                override fun onResponse(call: Call<LoginResponse>, response: Response<LoginResponse>) {
                    when (response.code()) {
                        200 -> {
                            val pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE)
                            val editor = pref.edit()
                            editor.putString("email", etEmail.text.toString())
                            editor.commit()
                            finish()
//                            // 토큰 저장하기
//                            App.prefs.token=token
//                            // 토큰 가져오기
//                            val token = App.prefs.token
                            Log.d("Post", "success ${response.body().toString()}")

                            App.token_prefs.accessToken = response.body()!!.result.accessToken
                            App.token_prefs.refreshToken = response.body()!!.result.refreshToken

                            Toast.makeText(this@LoginActivity, email+" 로그인", Toast.LENGTH_SHORT).show()
                            startActivity(intent)  // 화면 전환을 시켜줌
                            finish()
                        }
                        405 -> Toast.makeText(this@LoginActivity, "로그인 실패 : 아이디나 비번이 올바르지 않습니다", Toast.LENGTH_LONG).show()
                        500 -> Toast.makeText(this@LoginActivity, "로그인 실패 : 서버 오류", Toast.LENGTH_LONG).show()
                    }
                }/*
                    if(response.isSuccessful) {
                        Log.d("Post", "success ${response.body().toString()}")
//                    Log.d("Post","success ${response}")
                    } else {
                        Log.d("Post", "success,but ${response.errorBody()}")
                        Toast.makeText(this@LoginActivity, "아이디/비밀번호를 확인해주세요", Toast.LENGTH_SHORT).show()
                    }
                }*/

                override fun onFailure(call: Call<LoginResponse>, t: Throwable) {
                    Log.d("Post","fail ${t}")
                }
            })

그외 참고 응답코드