Android async httpclient:如何在一个地方拦截身份验证失败?

时间:2014-11-30 02:26:31

标签: android asynchttpclient

我有以下心理模型,对于我的Android应用程序,所有身份验证失败都应该在一个地方处理,登录屏幕应该中断并在视图堆栈顶部闪烁以允许用户重新进行身份验证。

不确定如何使用AsyncHTTPClient执行此操作。

我不想继续处理我发出的每个GET和POST请求的401和404请求。听起来好像很多重复的代码。因此,对于谷歌和CNN,例如,如果我未经过身份验证,我不想重复代码来处理CNN和谷歌的401未经过身份验证的代码,因为它是完全相同的代码。 / p>

谢谢!

 AsyncHttpClient client = new AsyncHttpClient();
 client.get("http://www.google.com", new AsyncHttpResponseHandler() {
     @Override
     public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
          System.out.println(response);
     }
     @Override
     public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable
 error)
 {
          error.printStackTrace(System.out);if 401, TELL USER he has to log in again

     }
 });

 AsyncHttpClient client = new AsyncHttpClient();
 client.get("http://www.cnn.com", new AsyncHttpResponseHandler() {
     @Override
     public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
          System.out.println(response);
     }
     @Override
     public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable
 error)
 {
          error.printStackTrace(System.out);if 401, TELL USER he has to log in again

     }
 });

1 个答案:

答案 0 :(得分:0)

AsyncHttpResponseHandler创建自己的子类并单独实现onFailure;在那里添加所有故障处理逻辑。

将此子类用于client.get而不是AsyncHttpResponseHandler,只需实施onSuccess

    client.get("http://www.cnn.com", new MyAsyncHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
            System.out.println(response);
        }
        // onFailure handled by common code in MyAsyncHttpResponseHandler
     }