@Override
 public void onFailure(
     int statusCode, Header[] headers, String responseString, Throwable throwable) {
   if (!mIsSilent) {
     if (mContext != null) {
       if (Utils.isNetworkConnected(mContext)) {
         ToastUtil.make(mContext).show(R.string.common_toast_connectionnodata);
       } else {
         ToastUtil.make(mContext).show(R.string.common_toast_connectionfailed);
       }
       Log.i("http response", responseString);
       JSONObject errorJsonObject = new JSONObject();
       try {
         errorJsonObject.put("code", "-123789");
         errorJsonObject.put("msg", responseString);
       } catch (JSONException e) {
         e.printStackTrace();
       }
       if (mAsyncHttpResponseHandler != null) {
         mAsyncHttpResponseHandler.onFailure(statusCode, headers, throwable, errorJsonObject);
       } else {
         onFailure(statusCode, headers, throwable, errorJsonObject);
       }
     }
   } else {
     super.onFailure(statusCode, headers, responseString, throwable);
   }
 }
 @Override
 public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
   Log.i("http result", response.toString());
   try {
     // 补充完整系统级参数
     switch (response.getInt("code")) {
       case Constant.CODE_TIMEOUT:
       case Constant.CODE_DATA_ERROR:
       case Constant.CODE_DB_ERROR:
       case Constant.CODE_SERVICE_ERROR:
       case Constant.CODE_USER_PERMISSIONS:
       case Constant.CODE_SERVICE_UNAVAILABLE:
       case Constant.CODE_MISSING_METHOD:
       case Constant.CODE_ASIGN_UNVALID:
       case Constant.CODE_MISSING_API_VERSION:
       case Constant.CODE_API_VERSION_ERROR:
       case Constant.CODE_TOKEN_EXPIRES:
       case Constant.CODE_DATA_CONFLICT:
         if (!mIsSilent) {
           if (mContext != null) {
             ToastUtil.make(mContext).show(R.string.common_toast_error);
           }
         }
         break;
       case Constant.CODE_RELOGIN:
         // re-login
         if (mContext != null) {
           // mContext.sendOrderedBroadcast(new Intent(
           // UserUtil.ACTION_RELOGIN), null);
         }
         break;
       case Constant.CODE_USER_LOCKED:
       case Constant.CODE_SUCCESS:
       case Constant.CODE_FAILURE:
       default:
         if (mContext != null) {
           if (mAsyncHttpResponseHandler == null) {
             super.onSuccess(statusCode, headers, response);
           } else {
             mAsyncHttpResponseHandler.onSuccess(statusCode, headers, response);
           }
         }
         break;
     }
   } catch (JSONException e) {
     super.onSuccess(statusCode, headers, response);
     e.printStackTrace();
   }
 }
  @Override
  public void onFailure(
      int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {

    Log.i("http result", throwable.toString());

    if (!mIsSilent) {
      if (mContext != null) {
        if (Utils.isNetworkConnected(mContext)) {
          ToastUtil.make(mContext).show(R.string.common_toast_connectionnodata);
        } else {
          ToastUtil.make(mContext).show(R.string.common_toast_connectionfailed);
        }
        if (mAsyncHttpResponseHandler != null) {
          mAsyncHttpResponseHandler.onFailure(statusCode, headers, throwable, errorResponse);
        } else {
          super.onFailure(statusCode, headers, throwable, errorResponse);
        }
      }
    } else {
      super.onFailure(statusCode, headers, throwable, errorResponse);
    }
  }