我正在尝试通过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)
有什么主意吗?
答案 0 :(得分:3)
您可能将okhttp3.Response
与retrofit.Response
混淆了。尝试像这样在API响应中使用retrofit2.Response
包装器:
@POST("xxxxxx")
fun resendBankSlip(@Path("userId") userId: Int): Deferred<retrofit2.Response<Unit>>
之后,您可以通过response.code()
轻松获得响应代码。
还要注意,我通过Unit
作为Response
的类型参数,因为您不需要主体。在其他情况下,您应该传递实际类型的响应正文。