Retrofit 网络请求协议:
在 Retrofit 整个网络请求参数主要分成 : scheme, authority, path, query, header, body 六块 。
其中authority可以进一步划分为:host:port
示例:host:www.java2s.com : port: 8080
在整个结构中,将scheme 和 authority 这两者的合体称为 baseurl ,接口方法如下:
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com/") .build();
- header 分为两种
第一种,静态header:又分为 a: 单个键值对注解 和 b: 多个键值对注解
第二种:动态header : 又分为 a: 局部动态header(分为单个键值对和多个键值对) 和 b: 全局动态header(适用于项目中的header规则一致的情况)
这里采用 OKHttp 的 interceptor 作例:
private static void initHttpClient(){ OKHttpClient.Builder httpClientBuilder = new OKHttpClient.Builder(); if(httpClientBuilder.interceptors() != null){ httpClientBuilder.interceptors().clear(); } httpClientBuilder.addInterceptor(new Interceptor(){ @Override public Response intercept(Chain chain) throws IOException{ //这里可以获取到请求的request 所有的数据 Request request = chain.request(); String path = request.url().encodedPath(); String query = request.url().query(); Request interRequest = chain.request().newBuilder() .headers(Headers.of(Map yourHeader)) .build(); return chain.proceed(interRequest); } }) .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS); mOkHttpClient = httpClientBuilder.build(); }
构建Retrofit 实例:
public static Retrofit retrofit(){ if(mRetrofit == null){ initHttpClient(); mRetrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .client(mOKHttpClient) .addConvertFactory(GsonConvertFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .builder(); } return mRetrofit; }