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


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




}




猜你喜欢

转载自blog.csdn.net/u013372185/article/details/52681407