Таким образом, у меня есть VolleyLoginRequest
, который анализирует ответ следующим образом:
override fun parseNetworkResponse(response: NetworkResponse?): Response<ILoginResponse> {
return response?.let {
if(it.statusCode != 204) Response.success(LoginResponse.Failure as ILoginResponse,null)
else{
val headers = response.allHeaders.map { AuthUtils.Header(it.name,it.value)}
val jwtToken = AuthUtils.getJWTfromHeaders(headers) ?: return Response.error(VolleyError("no jwt provided"))
val creds = Credentials.Valid(jwtToken)
Response.success(LoginResponse.Success(creds) as ILoginResponse,null)
}
}?:Response.success(LoginResponse.Failure as ILoginResponse,null)
}
, где
sealed class LoginResponse(override val succeeded: Boolean) : ILoginResponse{
object Failure:LoginResponse(false)
class Success(val credentials: Credentials.Valid):LoginResponse(true)
}
Если я передаю действительные данные для входа, это, кажется, работает нормально.
Однако, если я передаю неверную информацию, то - как вы можете видеть из приведенного выше кода - я также хочу проанализировать действительный ILoginResponse
, а именно LoginResponse.Failure
.
Чтовместо этого происходит то, что Response.ErrorListener
вызывается с VolleyError
чтением
BasicNetwork.performRequest: неожиданный код ответа 401
Как мне разрешить ответ с кодом 401 для анализа?