제 retrofit class 입니다
private val retrofit: Retrofit = Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(serverIp)
.build()
val userApi: UserAPI = retrofit.create(UserAPI::class.java)
data class
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 class
@POST("user")
fun loginBody(
@Body loginRequest : LoginRequest
) : Single<UserResponse>
model
fun loginBody(body: LoginRequest): Single<UserResponse>
model Impl
override fun loginBody(body: LoginRequest): Single<UserResponse> {
return RetrofitAPI.getInstance().userApi.loginBody(body)
}
viewModel (호출부분)
fun loginEvent(userId: String?, userName: String?, password: String?, phone: String?, gender: String?, age: Int?,
email: String?, provider: String?, pushNotiFl:String?, kakaoNotiFl: String?, deviceToken: String?) {
val test: LoginRequest = LoginRequest(userId, userName, password, phone, gender, age, email, provider, pushNotiFl, kakaoNotiFl, deviceToken)
Timber.d("Test Checked ! $test")
addDisposable(
model.loginBody(test)
.subscribeOn(Schedulers.io())
.subscribe({
_loginResult.postValue(it)
}, {
Timber.d("response error, message : ${it.localizedMessage}")
})
)
}
Login Activity
viewModel.loginResult.observe(this@LoginActivity, Observer {
if (it.status == 200){
Timber.d("Test Checked ${it.responseData.login.age}")
}else{
Timber.d("Test Checked error ${it.status} ")
}
})
포스트맨 은 정상적으로 나오는것 보아 서버는 문제 없다고 생각됩니다
reetrofit2 호출후 status가 0을 뱉고 response가 null 만 뱉는데 어디부분을 잘못햇는지 잘 모르겠어서 질문드립니다
구글링해보니 리턴코드가 0이면 서버에 정상적으로 연결되었다는 기사를 봤는데 바로 종료되고, 데이터가 정상적으로 입력되지 않아서 라고 하기도 합니다.
아무리 찾아도 잘 모르겠어서 질문글 올려봅니다
일단 viewModel 쪽에서 throwable를 안뱉는거보면 서버랑 통신은 되는데 잘못된 데이터를 준거라고 생각이 됩니다
하지만 정상적으로 데이터를 준것 같은데 이런상황이라 어디가 잘못된지 못찾겟어서요 ....
혹시 작은 팁이라도 주시면 감사하겟습니다