마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

android retrofit2 질문

0 추천

data 리퀘스트 클래스

data class LoginRequest(
    @SerializedName("userId") val userId: String?,
    @SerializedName("userName") val userName: String?,
    @SerializedName("password") val password: String?,
    @SerializedName("phone") val phone: String?,
    @SerializedName("gender") val gender: String?,
    @SerializedName("age") val age: Int?,
    @SerializedName("email") val email: String?,
    @SerializedName("provider") val provider: String?,
    @SerializedName("pushNotiFl") val pushNotiFl: String?,
    @SerializedName("kakaoNotiFl") val kakaoNotiFl: String?,
    @SerializedName("deviceToken") val deviceToken: String?
)

유저 api

@POST("user")
    fun loginBody(
        @Body loginRequest : LoginRequest
    ) : Single<UserResponse>

유저 모델

fun loginBody(body: LoginRequest): Single<UserResponse>

유저 impl

override fun loginBody(body: LoginRequest): Single<UserResponse> {
        return RetrofitAPI.getInstance().userApi.loginBody(body)
    }

 

포스트맨이 정상인거 보면 서버쪽 에러는 아니고

activity 에서 response status가 0가 나오고있습니다 

end point 에러라면 rxjava 사용한 viewmodel 에서 response error 이 나와야 정상이라고 생각합니다

하지만 액티비티에서 response status 가 나온다는건 서버에 정상적으로 api를 찌르는 데는 성공했으니 response 가 나온다고 생각합니다 

 

그럼 여기서 response status가 0이 뜨고 다른 response data가 null 이뜨는 이유는 추측이지만 okhttp 로그를 확인해보니 json이 순서대로 만들어지지 않고 이상하게 조합이 되는 것 이라고 생각됩니다

여기서 json이 순서대로 조합되지 않는 이유도 잘모르겠습니다 리퀘스트 데이터에 시리얼라이즈 데이터도 재대로 맵핑해줬다고 생각되는데 이부분부터 고쳐나가야 다음 추측을 해보면서 풀어갈텐데 이부분이 이해가 안되서 혹시 아시는분 있으신가요? 아니면 솔루션을 제안해주셔도 감사할거같습니다 


글이 안올라가 스택오버플로 질문 링크드립니다 ( log 및 포스트맨 및 response 확인 액티비티 콜뷰모델)

https://stackoverflow.com/questions/68356733/android-retrofit2-response-data-null-how-to-fix-it

공과근성 (6,020 포인트) 님이 2021년 7월 16일 질문
혹시나 해서인데 Retrofit에 세팅하신  BaseUrl은 "/"로 끝나나요?
Http Status code = 0 는 Http call이 취소된 것을 말하네요. 스택오버플로우를 보니 서버이슈였네요.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...