<android>对NoHttp的封装使用,仅供学习参考

对NoHttp的简单封装使用

估计不少人页都用过nohttp了,那么怎么封装它比较好呢,我自己感觉有三点:


1.接口丰富
2.使用简单
3.耐操

(暂时没做到这样子,此帖会更新)

public class NohttpUtils<T> implements OnResponseListener<T> {
    private NoListener mListener;
    private AlertDialog.Builder builder;
    private AlertDialog dialog;
    private RequestQueue requestQueue;
    private Request<String> stringRequest;
    private Context context;
    private int RequestCode;

    /**
     * 外部使用
     *
     * @param context
     * @param mListener
     */
    public NohttpUtils(Context context, NoListener mListener) {
        this.mListener = mListener;
        this.context = context;
        builder = new AlertDialog.Builder(context);
        View view = View.inflate(context, R.layout.spots_dialog, null);
        builder.setView(view);
        requestQueue = NoHttp.newRequestQueue();
    }

    /**
     * 三参的在add的过程中会传入一个新的RequestCode,在本类中传递RequestCode使用
     *
     * @param context
     * @param mListener
     * @param RequestCode
     */
    public NohttpUtils(Context context, NoListener mListener, int RequestCode) {
        this.mListener = mListener;
        this.context = context;
        this.RequestCode = RequestCode;
        builder = new AlertDialog.Builder(context);
        View view = View.inflate(context, R.layout.spots_dialog, null);
        builder.setView(view);
        requestQueue = NoHttp.newRequestQueue();
    }


    @Override
    public void onStart(int what) {
        if (builder != null) {
            dialog = builder.show();
        }
    }

    @Override
    public void onSucceed(int what, Response<T> response) {
        if (mListener != null) {
            mListener.onSuccess(RequestCode, response.get().toString());
        }
    }

    @Override
    public void onFailed(int what, String url, Object tag, Exception exception, int responseCode, long networkMillis) {
        if (mListener != null) {
            mListener.onFailure(RequestCode, exception);
        }
    }

    @Override
    public void onFinish(int what) {
        if (dialog != null) {
            dialog.dismiss();
        }
    }


    /**
     * get请求
     */
    public void get(String url, int RequestCode, int timeOut) {
        stringRequest = NoHttp.createStringRequest(url, RequestMethod.GET);
        requestQueue.add(timeOut, stringRequest, new NohttpUtils<String>(context, mListener, RequestCode));
    }


    /**
     * post请求
     */
    public void post(String url, int RequestCode, int timeOut) {
        stringRequest = NoHttp.createStringRequest(url, RequestMethod.POST);
        requestQueue.add(timeOut, stringRequest, new NohttpUtils<String>(context, mListener));

    }
    
}
 
 
 
 
在外部这样使用:
 
 
 
 
    NoHttp.initialize(getApplication());
    
    NohttpUtils<Object> nohttpUtils = new NohttpUtils<>(this, new NoListener() {
        @Override
        public void onSuccess(int RequestCode, String context) {
            switch (RequestCode) {

                case LEFT_CODE:
                    left.setText("请求码是" + LEFT_CODE + "的响应结果:\n" + context);
                    break;

                case RIGHT_CODE:
                    right.setText("请求码是" + RIGHT_CODE + "的响应结果:\n" + context);
                    break;
            }
        }

        @Override
        public void onFailure(int responseCode, Exception exception) {

        }
    });
    

    String left_url = "http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    String right_url = "http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    nohttpUtils.get(left_url, LEFT_CODE, 10);
    nohttpUtils.get(right_url, RIGHT_CODE, 10);

}

 
 

猜你喜欢

转载自blog.csdn.net/csdn_lg_one/article/details/78225316
今日推荐