拦截器

来源:互联网 发布:法国兴业银行 知乎 编辑:程序博客网 时间: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);      }  }  



原创粉丝点击