Firebase Realtime Database 와 통신시 오류
결론, 시간대비 너무 어이없었던 오류 ㅠㅠ HTTP 401 이라고 해서 모두 권한 오류는 아니구만..
원래 Realtime Database REST API와 retrofit를 활용하여 통신해보기로 함!
그런데 계속 아래와 같은 오류가 생겼다.
Fatal Exception: retrofit2.HttpException: HTTP 401
at retrofit2.KotlinExtensions$await$2$2.onResponse(KotlinExtensions.kt:53)
at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:161)
권한 관련한 오류인것 같아서 1차로 리얼타임데이터베이스 보안규칙을
{
"rules": {
".read": "true",
".write":"auth != null"
}
}
read를 true로 바꿔보았고, 그래도 해결이 되지 않았음. 똑같이 401 오류 발생
코드상 개인 토큰값도 제대로 받아서 통신시 넣어주는데 뭐가 문제였는지
도무지 모르겠어서 이것저것 구글링도 해보고 아래 링크도 참고해봤는데 이것도 해결이 되지 않았음
https://github.com/square/retrofit/discussions/3795
retrofit2.HttpException: HTTP 401 · square retrofit · Discussion #3795
I got one issue reported by Crashlytic. Fatal Exception: retrofit2.HttpException: HTTP 401 at retrofit2.KotlinExtensions$await$2$2.onResponse(KotlinExtensions.kt:53) at retrofit2.OkHttpCall$1.onRes...
github.com
그러다가 문득 데이터베이스에 저장된 값(json파일)과 내가 통신시 받는 데이터클래스가 잘 일치하는지 확인하기로 함.
당연히 일치하는 줄 알았는데 역시 당연한건 없었음......
json파일과 내 데이터클래스 모델에 이름 한 두개가 일치하지 않았다.
예를 들면, 데이터클래스 변수명은 deliveryFee / json 파일은 delivery_fee 이렇게 되어있던 것
json파일의 이름과 데이터클래스의 변수명이 일치하거나 혹은 바꾸고 싶으면 @SerializedName("selected") 이거를 넣어서 해줬어야 했는데 이 부분이 잘못 되었던 것!!
근데 내가 이걸 확인을 안해본건 아니다...근데 왜 이렇게 오래 걸렸냐면
json파일에 deliveryFee 이름이 모두 잘못된 것은 아니었고 deliveryFee, delivery_fee가 둘다 존재했던것
내가 확인하려고 봤던 예시 데이터는 deliveryFee로 잘 되어있던 거였어서 당연히 이부분은 오류가 아닐줄 알았다.
근데 이걸 401에러로 뱉는구나,,,ㅎㅎㅎ 이제라도 알아서 다행!! 해결!
@Serializable
data class ProductModel(
val key: String = "",
val name: String = "",
val price: String = "",
val time: String = "",
val parcel: String = "",
val deliveryFee: Int = 0,
val parcelDay: String = "",
val category: String = "",
var count: Int = 0,
var count_sum: Int = 1,
@SerializedName("selected")
var isSelected: Boolean = false
) : java.io.Serializable {
fun getTotalPrice(): Int {
return price.toInt() * count
}
}
'안드로이드앱' 카테고리의 다른 글
사용자 계정 및 관련 데이터의 삭제 요청 (1) | 2024.01.01 |
---|---|
NewsApp 팀프로젝트 회고록 작성(12월 11일 ~ 12월 29일) (1) | 2023.12.31 |
PayAPP 팀프로젝트 회고록 작성(11월 20일 ~ 12월 8일) (0) | 2023.12.22 |
API 불러오기 HttpURLConnection, Gson, Rtrofit2 까지 모두 (0) | 2023.12.13 |
안드로이드 지라프(GIRAFFE) , 고슴도치(hedgehog) 버전 API키 숨기기 (0) | 2023.12.13 |