对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); }