Strong 감자의 공부

retrofit 응답값 에러 유형-with Interceptor 본문

개념_Android Studio with Kotlin/07_Open Api, 구글 지도, 네트워크

retrofit 응답값 에러 유형-with Interceptor

ugyeong 2023. 9. 21. 14:44

 

에러 ) api응답은 201 요청이 오는데 사용한 interceptor에서는 500에러가 났다...

1. 응답값이 403이든 200이든 fail로 넘어가는게 아니라면 요청값 자체가 잘못 전달된것이다.

(isSuccesful은 [200,300) 사이일 경우이다.) 

2. fail로 넘어간것이라면 응답값 형식에 의심해보자.

 

회고) 결론은 스웨거 parameter여부를 확인할 줄 몰랐어서였다. 

 

그 전까지는 요청을 바디로만 해서 바디로만 보내면 되구나라고 생각했었다. 그리고 때마침 api설명도 body로 보내세요라고 잘못 작성돼 있어 통신에러 원인 찾는데 몇시간 애 먹었당...

초반엔 첨 써보는 interceptor를 잘못 작성했나 했다. 왜냐하면 레트로핏 응답값은 201이면서 interceptor.kt 로그에서 에러메시지가 났기 때문이다.(나중에 안 사실인데 응답값을 201로 주는데 200이 아니면으로 처리해서였당..ㅋㅋ 정말 여러 번 봤는데...ㅋㅋ)

그 후 interceptor.kt를 수정해도 안되자... 도대체 뭐지 싶었는데 갑자기 interceptor를 호출하는 다른 api도 이런가?라는 생각이 스쳤다. 확인해보니 다른 페이지는 잘 동작했다(다른 페이지에서 interceptor 사용안했으면 얼마나 더 헤맸을지 아찔하다...)그러면 바디에 보내는 형식이 잘못됐나? 싶어 바디 형식을 확인해봤다. 맞는것 같았다... (음... 흐린눈으로 봤나보다 응답코드 200만 허용하게하고ㅋㅋ)

이 이후론 응답값을 받긴하니 요청값이 잘못된건 같은뎅... 뭐가 문제인진 모르겠넹~ 상황이였다. 그래서 고민 끝에 서버분에게 물어보니 parameter는 Http Request의 쿼리 매개변수이고 body는 Http Request의 body입니다. 라고 알려주셨다.

왼쪽은 쿼리로 보내야하고 오른쪽은 바디로 보내는것이였다.

no써있는걸 어떻게 계속 못봤고 차이도 몰랐을까...