Android Volley - как я могу ожидать код ошибки? - PullRequest
0 голосов
/ 27 января 2019

Таким образом, у меня есть 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 для анализа?

...