最近项目有关需求,需要app在调用不同模块时,发起不同url的请求。经过查找资料发现可以通过retrofit的拦截器解决。
1.在网络请求接口中添加@Headers
在网络请求接口中添加@Headers({“url_name:xxx”})。
public interface RetrofitService
{
String URL_WEATHER = "url_name:weather";
String URL_BOOK = "url_name:book";
@Headers(URL_WEATHER)
@GET("/data/sk/{cityId}.html")
Observable<ResponseBody> getWeatherByCityId(@Path("cityId") String cityId);
@Headers(URL_BOOK)
@GET("/v2/book/search")
Observable<ResponseBody> getBook(@Query("q") String bookName);
}
对于retrofit网络请求参数的注解,可以查看Retrofit注解
2.自定义ChangeUrlInterceptor拦截器
public class BaseUrlInterceptor implements Interceptor
{
@O