处理服务中的空车身响应

时间:2019-01-11 17:20:38

标签: kotlin retrofit2 kotlinx.coroutines

我正在尝试通过POST调用服务,该服务向用户发送电子邮件,正文总是返回空,我必须处理响应代码。 例如204 =成功。

我正在尝试以这种方式处理,但我没有成功

服务:

import tkinter as tk


root = tk.Tk()
tklon = tk.StringVar()
tklon.set(0.0)


def trace_callback(*args):
    if tklon.get().isdecimal():
        print("Do stuff with decimal")
    else:
        print("Value is not a decimal")


lonEntry = tk.Entry(root, textvariable=tklon).pack()
tklon.trace('w', trace_callback)
root.mainloop()

ViewModel:

@POST("xxxxxx")
fun resendBankSlip(@Path("userId") userId: Int): Deferred<Response>

错误发生在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 } }

例外:

val response = repository.sendEmail(userId)

有什么主意吗?

1 个答案:

答案 0 :(得分:3)

您可能将okhttp3.Responseretrofit.Response混淆了。尝试像这样在API响应中使用retrofit2.Response包装器:

@POST("xxxxxx")
fun resendBankSlip(@Path("userId") userId: Int): Deferred<retrofit2.Response<Unit>>

之后,您可以通过response.code()轻松获得响应代码。

还要注意,我通过Unit作为Response的类型参数,因为您不需要主体。在其他情况下,您应该传递实际类型的响应正文。