基于volley,返回数据的封装

package com.cyhz.csyj.utils;


import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;


import com.cyhz.csyj.base.AppContext;
import com.cyhz.csyj.others.UiHelper;
import com.cyhz.csyj.toolbox.MsgDispatchCenter;
import com.cyhz.csyj.view.activity.AppStart;
import com.cyhz.csyj.view.activity.BaseActivity;
import com.cyhz.csyj.view.activity.LoginNew;
import com.cyhz.csyj.view.view.NetWorkProgressDialog;
import com.google.gson.Gson;
import com.netroid.Listener;
import com.netroid.NetroidError;


import org.json.JSONObject;


import java.lang.reflect.ParameterizedType;
import java.util.List;


/**
 * Created by liuxiaolong on 14-9-18.
 */
public abstract class ListenerCasingTransmit extends Listener {


    NetWorkProgressDialog netWorkProgressDialog;
    Context context;
    Class class1;


    public ListenerCasingTransmit(Context context) {
        if (context != null) {
            netWorkProgressDialog = new NetWorkProgressDialog(context);
        }
        this.context = context;
        try {
            class1 = (Class) ((ParameterizedType) getClass()
                    .getGenericSuperclass()).getActualTypeArguments()[0];
        } catch (Exception e) {
            class1 = (Class) Object.class;
        }


    }


    /**
     * 在请求的时候是否显示进度动画。
     *
     * @return
     */
    public boolean isDialogShow() {
        return true;
    }




    @Override
    public void onFinish() {
        super.onFinish();
        if (isDialogShow() && netWorkProgressDialog.isShowing()) {
            netWorkProgressDialog.dismiss();
        }
    }


    @Override
    public void onPreExecute() {
        super.onPreExecute();
        if (isDialogShow()) {
            netWorkProgressDialog.show();
        }
    }


    @Override
    public void onSuccess(JSONObject response) {
        try {
            String code = response.getString("err_no");
            if (code.equals("0")) {
                String data = response.getString("data");
                success(data);
                char ch = data.substring(0, 1).toCharArray()[0];
                if (ch == '{') {
                    success(ParseUtil.parseResultJson(data, class1, new Gson()));
                } else if (ch == '[') {
                    success(ParseUtil.parseResultJsonArray(data, class1));
                } else {
                    logcatFilter("json 返回格式错误:" + code);
                }
                logcatFilter("请求成功:" + data);
            } else {
                logcatFilter("请求错误,错误代码 :" + code);
                failure(code);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    @Override
    public void onError(NetroidError error) {
        super.onError(error);
        error(error.getMessage());
        Log.e("sdjbsjkdbnksb", error.toString());
        // Toast.makeText(context, "网络异常,请检查网络设置!", Toast.LENGTH_SHORT).show();
        logcatFilter("请求失败,错误原因 :" + error.getMessage());
    }


    /**
     * 根据服务器端返回的log打印字段来设置是否显示日志信息。
     *
     * @param content
     */
    public void logcatFilter(String content) {
        try {
            String logCode = AppContext.get().getAppConfig().getAccessInfo().getDebug_log_level();
            if (!TextUtils.isEmpty(logCode)) {
                if (logCode.equals("5")) {
                    Toast.makeText(context, content, Toast.LENGTH_LONG).show();
                }
            }
        } catch (Exception e) {


        }


    }


    public void success(T t) {


    }


    public void success(String result) {


    }


    public void success(List ts) {


    }


    public void failure(String code) {
        Log.e("lxl...log...response1",code);
        if (code.equals("1115")) {
            if (context instanceof BaseActivity) {
                ((BaseActivity) context).showToast("授权码失效!");
                SharedPreferences sharedPreferences = context.getSharedPreferences(AppStart.SETTING_INFOS, 0);
                SharedPreferences.Editor editor = sharedPreferences.edit();
                editor.putInt(LoginNew.REMEMBERPASSWORD, 10);
                editor.commit();
                UiHelper.toLoginNew((BaseActivity) context);
                ((BaseActivity) context).getScreenManager().popAllActivityExceptOne(LoginNew.class);
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            MsgDispatchCenter.closeMQ();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        }
    }


    public void error(String error) {
        if (isDialogShow() && netWorkProgressDialog.isShowing()) {
            netWorkProgressDialog.dismiss();
        }
    }


}

你可能感兴趣的:(基于volley,返回数据的封装)