这里没有用android应用,而是用的一个test方法来测试拦截器。
具体就是新建一个空工程,然后在Test里,添加方法,当然,也要添加OkHttp的相关依赖。
就是添加这个,implementation 'com.squareup.okhttp3:okhttp:4.9.0',记得点前面的黄灯,然后点sycn,就是同步这个引用。
然后在manifest里添加<uses-permission android:name="android.permission.INTERNET"/>
再下来就在test里添加代码就行了。
package com.example.test001;
import androidx.annotation.NonNull;
import org.junit.Test;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class JavaTest {
@Test
public void testrun(){
System.out.println("hehe1");
interceptorTest();
}
public void interceptorTest(){
//创建一个新的OkHttp对象,并为这个对象建立一个新的拦截器
OkHttpClient okHttpClient=new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@NonNull
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
//在request里添加header信息,以便实别
Request request = chain.request().newBuilder().addHeader("os", "android")
.addHeader("verion", "1.0").build();
//信息处理得到response对象,然后返回这个带有信息的对象。
Response response=chain.proceed(request);
return response;
}
}).build();
Request request=new Request.Builder().url("https://www.httpbin.org/get?a=1&b=2").build();
Call call=okHttpClient.newCall(request);
try{
Response response=call.execute();
System.out.println(response.body().string());
}catch (IOException e){
e.printStackTrace();;
}
}
}