OKHTTP请求+拦截器+Gson单利(攻击类)

来源:互联网 发布:小甲鱼c语言第一章 编辑:程序博客网 时间:2024/06/15 23:46

一.使用OK需要添加依赖

compile 'com.squareup.okhttp3:okhttp:3.9.1'

二.使用Gson添加依赖

compile 'com.google.code.gson:gson:2.8.1'


三.OKHTTP的使用

package com.bwie.skn.djmalldeom.utils;import android.os.Handler;import android.util.Log;import com.bwie.skn.djmalldeom.config.OKHttpCallBack;import java.io.IOException;import java.util.Map;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * author:Created by WangZhiQiang on 2017/12/5. */public class OKHttpUtils {    private static OKHttpUtils okHttpUtils;    private static Handler handler = new Handler();    //私有化构造方法    public OKHttpUtils(){    }    /**     * 获取OKhttpClient实例化     */    public static OKHttpUtils getInstance(){        if(null == okHttpUtils){            synchronized (OKHttpUtils.class){                if (null == okHttpUtils){                    okHttpUtils = new OKHttpUtils();                }            }        }        return okHttpUtils;    }    /**     *  封装的异步Get请求     */    public void doGet(String path, Map<String,String>map, final OKHttpCallBack okHttpCallBack){        //创建一个字符串容器        StringBuilder sb = null;        if (null==map){            if (null ==sb){                sb = new StringBuilder();                sb.append(path);            }        }else {            for (String key:map.keySet()){                if (null == sb){                    sb = new StringBuilder();                    sb.append("?");                }else{                    sb.append("&");                }                sb.append(key).append("=").append(map.get(key));            }        }//        StringBuilder sb = new StringBuilder();//        sb.append(path).append("?");//        for(Map.Entry entry:map.entrySet()){//            sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");//        }////        sb.deleteCharAt(sb.lastIndexOf("&"));        //Log.e("WWWWW",sb.toString());        //////////////////        OkHttpClient okHttpClient = new OkHttpClient.Builder()                .addInterceptor(new Intercept())//使用拦截器                .build();        Request request = new Request.Builder()                .url(path+sb.toString())                .get()                .build();        //OKHttp 网络        Call call = okHttpClient.newCall(request);        //异步请求        call.enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {                //请求失败                Log.e("TAG","OK请求失败");                okHttpCallBack.onFailed(e.getMessage());            }            @Override            public void onResponse(Call call, final Response response) throws IOException {                final String str = response.body().string();                //请求成功                handler.post(new Runnable() {                    @Override                    public void run() {                        Log.e("TAG","请求成功"+str);                        okHttpCallBack.onSuccess(str) ;                    }                });            }        });    }}

四.拦截器的使用

package com.bwie.skn.djmalldeom.utils;import java.io.IOException;import okhttp3.HttpUrl;import okhttp3.Interceptor;import okhttp3.Request;import okhttp3.Response;/** * author:Created by Conan on 2017/12/14. */public class Intercept implements Interceptor {    @Override    public Response intercept(Chain chain) throws IOException {        Request original = chain.request();        HttpUrl url=original.url().newBuilder()                .addQueryParameter("source","android")                .build();        //添加请求头        Request request = original.newBuilder()                .url(url)                .build();        return chain.proceed(request);    }}

五.Gson的单利
package com.bwie.skn.djmalldeom.utils;import com.google.gson.Gson;/** * @date:2017-12-02 * @time:23:10 */public class GsonUtils {    private static Gson gson;        public static Gson getInstance(){            if(gson==null){                gson=new Gson();            }            return gson;        }}



原创粉丝点击