定义一个接口
OnFinishListener.java
public interface OnFinishListener {
void onFailed(String msg);
void onSuccess(Object obj);
}
CommonParamsInterceptor.java
public class CommonParamsInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
//得到原始的请求对象
Request request = chain.request();
//得到用户所使用的请求方式
String method = request.method();
if("GET".equals(method)){
//url
//原始的请求接口
String oldUrl = request.url().toString();
//拼接成一个新的URL
String newUrl = oldUrl + "&source=android";
//重新构建请求体
request = new Request.Builder()
.url(newUrl)
.build();
}else if("POST".equals(method)){
//得到原始的url
String oldUrl = request.url().toString();
//得到原有的请求参数
FormBody oldBody = (FormBody) request.body();//1 2 3
//新的构建项
FormBody.Builder builder = new FormBody.Builder();
for (int i =0 ; i < oldBody.size(); ++i){
//取出相关请求参数(原有的)
String name = oldBody.name(i);
String value = oldBody.value(i);
//将原始的参数拼装到新的构建体当中
builder.add(name,value);
}
//拼装我们的公共参数
builder.add("source","android");
request = new Request.Builder()
.url(oldUrl)
.post(builder.build())
.build();
}
//重新发送请求
return chain.proceed(request);
}
}
使用:
在okHttpClient后添加拦截器:
OkHttpClient okHttpClient = new OkHttpClient.Builder()
//添加应用拦截器
.addInterceptor(new CommonParamsInterceptor())
//.addNetworkInterceptor() //添加网络拦截器
.build();