拦截器
来源:互联网 发布:法国兴业银行 知乎 编辑:程序博客网 时间:2024/06/06 04:38
//带拦截器的OK
package com.example.mapdemo;import android.os.Handler;import android.util.Log;import java.io.IOException;import java.util.Map;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;public class EdOkthhp { private Handler handler=new Handler(); private static EdOkthhp okHttp; EdOkthhp(){ } public static EdOkthhp getInert(){ if(null == okHttp){ synchronized (EdOkthhp.class){ okHttp=new EdOkthhp(); } } return okHttp; } public void doGet(String path, Map<String,String> map, final Okinteface okinteface){ StringBuffer sb=null; for(String key:map.keySet()){ if(sb==null){ sb=new StringBuffer(); sb.append("?"); }else{ sb.append("&"); } sb.append(key).append("=").append(map.get(key)); } OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(new Logger()) .build(); final Request request = new Request.Builder() .get() .url(path+sb.toString()) .build(); Log.e("arr",path+sb.toString()); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { okinteface.shibai(e.getMessage()); } }); } @Override public void onResponse(Call call, final Response response) throws IOException { final String string = response.body().string(); handler.post(new Runnable() { @Override public void run() { okinteface.chenggong(string); } }); } }); }}
//拦截器的类
public class Logger 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); } }