在我的 Android 应用程序中,我有以下注销功能:
suspend fun logout(token: String): NetworkResult<Unit> {
return try{
val logoutResponse = service.logout("Token $token")
NetworkResult.Success(logoutResponse)
}catch(e:Throwable){
NetworkResult.Error(null) // <-- after a successful logout, we proceeed with this line WHY ?
}
}
包含端点的 API 接口包含以下内容:
@POST("logout")
suspend fun logout(@Header("Authorization") token: String)
在服务器端,我使用django-rest-knox作为第三方库进行身份验证。该库的注销端点有一个内置的 LogoutView,它在成功注销后返回“204 no content”响应。该文档建议不要更改 LogoutView,因为修改会导致不可预知的结果。但是虽然注销请求在服务器端成功,Retrofit 将“204 no content”响应视为异常。正如我在上面的代码片段中提到的,catch 子句被执行。
现在我的问题是:当请求成功时,为什么 Retrofit 会抛出异常?如何处理“204 no content”响应?