Estoy tratando de llamar a un servicio a través de POST que envía un correo electrónico al usuario, el cuerpo siempre regresa vacío, tengo que lidiar con el código de respuesta. por ejemplo, 204 = éxito.
Estoy tratando de lidiar de esta manera, pero no lo estoy logrando.
Servicio:
@POST("xxxxxx") fun resendBankSlip(@Path("userId") userId: Int): Deferred<Response>Ver modelo:
scope.launch { try { _loading.value = true val response = repository.sendEmail(userId) if (!response.isSuccessful) { _error.value = R.string.generic_error_message } } catch (e: Throwable) { _error.value = R.string.generic_error_message } finally { _loading.value = false } } El error ocurre en val response = repository.sendEmail(userId)
Excepción:
java.lang.IllegalArgumentException: 'okhttp3.Response' is not a valid response body type. Did you mean ResponseBody? for method EmailService.sendEmail¿Alguna idea?
Probablemente confundiste okhttp3.Response con retrofit.Response . Intente usar el envoltorio retrofit2.Response en una respuesta API como esa:
@POST("xxxxxx") fun resendBankSlip(@Path("userId") userId: Int): Deferred<retrofit2.Response<Unit>> Después de eso, puede obtener fácilmente el código de respuesta a través de response.code() .
También tenga en cuenta que pasé Unit como argumento de tipo de Response porque no necesita el cuerpo. En otros casos, debe pasar un tipo real de cuerpo de respuesta.