【andorid】基于okhttp3网络请求帮助类(GET、POST)

来源:互联网 发布:免费海关数据 米课 编辑:程序博客网 时间:2024/06/06 17:43
import android.os.AsyncTask;import com.wanwei.szjz.myapplication.util.LogcatHelper;import java.io.IOException;import java.util.Map;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import okhttp3.FormBody;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * Created by Administrator on 2016/9/22 0022. */public class HttpHelp {    private static HttpHelp instance;    private static OkHttpClient client;    private ExecutorService executor;    public  enum Type{        GET,POST    }    public interface CallBack{        public void result(String result,boolean isSuccess);    }    public HttpHelp() {        client = new OkHttpClient();        executor = Executors.newCachedThreadPool();    }    public static HttpHelp getInstance() {        if (instance ==null){            instance = new HttpHelp();        }        return instance;    }    public   void requestGet(final String url, final CallBack callBack){        new MyAsyncTask(url,callBack).executeOnExecutor(executor);    }    public   void requestPost(final String url, Map<String,String> formParams,final CallBack callBack){        new MyAsyncTask(url,formParams,callBack).executeOnExecutor(executor);    }    public  class MyAsyncTask extends AsyncTask<Void,Void,String>{        private String url;        private Map<String,String> formParams;        private Type type = Type.GET;        private CallBack mCallBack;        /**         * get请求         * @param url  请求地址         * @param callBack 结果回调         */        public MyAsyncTask( String url,CallBack callBack) {            this.url = url;            this.type = Type.GET;            this.mCallBack = callBack;        }        /**         * post请求         * @param url  请求地址         * @param formParams 表单参数         * @param callBack  结果回调         */        public MyAsyncTask( String url, Map<String,String> formParams,CallBack callBack) {            this.url = url;            this.formParams = formParams;            this.type = Type.POST;            this.mCallBack = callBack;        }        @Override        protected String doInBackground(Void... params) {            String result = null;            Request request = null;            try {                if(type ==Type.GET){                    request = new Request.Builder()                            .url(url)                            .build();                }else if(type ==Type.POST){                    //设置表单参数                    FormBody.Builder builder = new  FormBody.Builder();                    for (String key: formParams.keySet()) {                        builder.add(key,formParams.get(key));                    }                    //创建请求                    request = new Request.Builder()                            .url(url)                            .post(builder.build())                            .build();                }                //发送请求                Response response = client.newCall(request).execute();                result = response.body().string().toString();                LogcatHelper.showLogCompletion("result: "+result,100);            } catch (IOException e) {                e.printStackTrace();            }catch (NullPointerException e) {                e.printStackTrace();            }            return result;        }        @Override        protected void onPostExecute(String result) {            super.onPostExecute(result);            if(result ==null){                mCallBack.result(null,false);            }else{                mCallBack.result(result,true);            }        }    }}




1 0
原创粉丝点击