Recuperar respuesta JSON de rxjava / retrofit request POST

Creé una request POST utilizando rxjava y la actualización que acierta con éxito en mi server back-end e inicia session en el usuario (obtengo una respuesta 201 en mi console, todo bien). Sin embargo, quiero recuperar el token de acceso de los usuarios que se devuelve, pero cuando bash acceder al resultado de rxjava, solo me da el object que le pasé. En ninguna parte puedo encontrar la manera de get la respuesta exitosa de json. También he verificado que de hecho hay una respuesta en Cartero, así que es algo con respecto a cómo hago esta llamada.

Aquí está mi porción de Retrofit

@Headers("Content-Type: application/json") @POST("api/v1/login") fun loginTask(@Body cnetworkingentials: UserLogin) : Observable<UserLogin> 

Y la function API correspoinding

 class ApiFunctions(val apiService: LunchVoteApi) { fun provideHello(): io.reactivex.Observable<Hello> { return apiService.helloMessage() } fun loginTask(email: String, password: String): io.reactivex.Observable<UserLogin> { val cnetworkingentials: UserLogin = UserLogin(email, password) return apiService.loginTask(cnetworkingentials) } } 

El model UserLogin deserializado por Gson

 data class UserLogin( @SerializedName("email") val email: String, @SerializedName("password") val password: String ) 

Y finalmente la llamada en mi LoginActivity

 val loginTask = ApiProvider.provideLoginTask() override fun doInBackground(vararg params: Void): Boolean? { // TODO: attempt authentication against a network service. try { // Simulate network access. // Thread.sleep(2000) compositeDisposable.add( loginTask.loginTask(mEmail, mPassword) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe ({ result -> System.out.println(result.toString()) }, { error -> System.out.println(error) }) ) } catch (e: InterruptedException) { return false } 

La confusión surge cuando bash acceder al resultado -> porción de la llamada compuesta desechable. Simplemente imprime el object UserLogin. ¿Me estoy perdiendo de algo? Gracias.

Resulta que estaba devolviendo mi tipo de UserLogin en lugar de un object pojo con una propiedad token de acceso.

Cambiando mi llamada de @Headers("Content-Type: application/json") @POST("api/v1/login") fun loginTask(@Body cnetworkingentials: UserLogin) : Observable<AccessToken> a @Headers("Content-Type: application/json") @POST("api/v1/login") fun loginTask(@Body cnetworkingentials: UserLogin) : Observable<AccessToken>

Y creando un nuevo model

data class AccessToken( @SerializedName("accessToken") val email: String )

Ahora puedo imprimir el token. Gracias a @ john-oreilly

  • Invoque RxJava2 cancelable / desechable del hilo correcto
  • Clasificación de objects alfanuméricamente
  • RxJava - ¿Entradas de keyboard de contrapresión?
  • Ventana cornetworkingera RxJava
  • Lista mutable de Obersable <Object> espere hasta que todos terminen y combínelos en una list <Object>
  • Extraño comportamiento de componer y ObservableTransformer en RxJava cuando el genérico pasado se extiende
  • Prueba de intervalo infinito RxJava
  • Adaptador personalizado de Moshi con RxAndroid & Retrofit & Kotlin
  • Cómo consultar Realm en el background Subprocess usando RxJava2
  • RxKotlin - matriz de observadores dynamics
  • Método comodín de Kotlin