如何使用volley和okhttp停止在401上重试请求

时间:2013-08-20 09:50:49

标签: android android-volley

我在我的应用中使用新的(ish)凌空库进行联网。我正在与之通信的服务器返回401s,有时没有适当的挑战标题,这是无法更改的。

我开始使用OkHttp作为排球的传输层,因为我实际上需要读取响应并且当我得到401时会抛出异常。现在虽然我收到401但是请求会自动重试一旦它到达我的错误监听器之前。这对我来说是有问题的,因为401中的响应会在第二个请求上发生变化,而这是我可以访问的响应。

有没有办法改变这个,所以当你收到401时它不会自动重试,或者只是使用凌空来访问响应?

1 个答案:

答案 0 :(得分:3)

实施自己的RetryPolicy并覆盖public void retry(VolleyError error)方法,如下所示:

    @Override
    public void retry(VolleyError error) throws VolleyError {
        if (error.networkResponse.statusCode == HttpStatus.SC_UNAUTHORIZED)
        {
            throw new VolleyError("Client is not authorized, retry is pointless");
        }
    }