android - 截击错误,集中错误管理

标签 android android-volley

如果服务器返回错误 401,我必须打开登录 Activity , 不是像这样在任何调用中捕获错误类型,是否可以将错误管理集中在一个独特的点?

@Override
public void onErrorResponse(VolleyError error) {

    if (error instanceof TimeoutError || error instanceof NoConnectionError) {
        Toast.makeText(context,
                context.getString(R.string.error_network_timeout),
                Toast.LENGTH_LONG).show();
    } else if (error instanceof AuthFailureError) {
        //TODO
    } else if (error instanceof ServerError) {
       //TODO
    } else if (error instanceof NetworkError) {
      //TODO
    } else if (error instanceof ParseError) {
       //TODO
    }
}

我尝试实现我的自定义重试策略

@Override
    public void retry(VolleyError error) throws VolleyError {

        //HTTP 401 and 403
        if (error instanceof AuthFailureError) {
            AuthFailureError er = (AuthFailureError) error;

            //HTTP 401
            if (er.networkResponse.statusCode == HttpURLConnection.HTTP_UNAUTHORIZED) {


                  Intent intent = new Intent(context, LoginActivity.class);
                                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                  context.startActivity(intent);
            }
            else {
                  request.deliverError(er);
            }
       }
  }

但 401 错误仍然传递给 onErrorResponse 事件。

最佳答案

尝试扩展 com.android.volley.Request 以创建自定义类来执行此操作:这称为 Volley 自定义请求。然后覆盖所需的方法,同时覆盖 parseNetworkResponse() 来做这样的事情

@Override
    protected Response parseNetworkResponse(NetworkResponse response) {
        if (response.statusCode == HttpURLConnection.HTTP_UNAUTHORIZED) {
            /* go to login */
        }  
    }

应该这样做。

关于android - 截击错误,集中错误管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56803378/

相关文章:

android - Volley - 直接下载到文件(没有内存字节数组)

android - 与在Android上提供API的Node.js服务器建立安全连接

java - 从 snapshot.getKey() 获取不同的字符串;和 mAuth.getUid();没有 .push();

java - 如何读取文本文件并存储在类 vector 中 - Android

android - 如何将向量列表 (vector<Point2f>) 从 JNI 返回到 Java?

android - 将图像发送到 PHP 服务器时,android.content.ContentResolver.openInputStream 出现 NullPointer 异常

java - Volley 发布请求中的 JSON 格式无效

java - 意外响应代码 303 Volley 错误

javascript - 确定并绑定(bind)点击或 "touch"事件

android - 无法在 android studio 上解析符号 'android'