//拦截器的使用
public class LoggingInterceptor implements Interceptor {
private static final String UA = "User-Agent";
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request()
.newBuilder()
.addHeader(UA, makeUA())
.build();
return chain.proceed(request);
}
private String makeUA() {
String s = Build.BRAND + "/" + Build.MODEL + "/" + Build.VERSION.RELEASE;
return Build.BRAND + "/" + Build.MODEL + "/" + Build.VERSION.RELEASE;
}
}
//
public class Model implements Imm { private Bean bean; OkHttp3Utils okhttp; @Override public void shuju(Observer<Bean> observer) { okhttp=new OkHttp3Utils(); //创建被观察者 Observable.create(new Observable.OnSubscribe<Bean>() { @Override public void call(final Subscriber<? super Bean> subscriber) { //拦截器的使用 OkHttpClient oc=new OkHttpClient.Builder().addInterceptor(new LoggingInterceptor()).build(); Retrofit retrofit = new Retrofit.Builder() .client(oc) //设置网络请求的url .baseUrl("http://tingapi.ting.baidu.com/v1/restserver/") //设置Gson .addConverterFactory(GsonConverterFactory.create()) //设置Rxjava .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); //创建网络请求接口的实例 GetRequest_In jk = retrofit.create(GetRequest_In.class); //对发的请求进行封装 Call<Bean> call = jk.getCall(); //使用异步发送网络请求 call.enqueue(new retrofit2.Callback<Bean>() { //请求成功时回调 @Override public void onResponse(Call<Bean> call, Response<Bean> response) { bean = response.body(); //调用OnNext方法把值传给观察者 subscriber.onNext(bean); subscriber.onCompleted(); } //请求失败时的回调 @Override public void onFailure(Call<Bean> call, Throwable t) { } }); } }).subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); } }