Retrofit2 封装统一请求参数

本文介绍如何使用OkHttp拦截器(BaseInterceptor)来封装通用HTTP请求参数,如token和uid等,减少代码重复并提高效率。通过自定义拦截器,可以在所有请求中统一设置这些参数,同时展示了一个具体的实现案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android http请求中,通常每个request都有相同的参数,比如,token,uid等等,如何能一次性封装这些重复参数呢

本文的目的就是解决重复封装的梗,而解决这个问题的主要助手就是Interceptor(拦截器)

  • 自定义Interceptor
public class BaseInterceptor implements Interceptor {   
 @Override    
public Response intercept(Chain chain) throws IOException { 
       Request original = chain.request();    
//添加请求参数,此处是以豆瓣api为例,下面会贴出Base_url
       HttpUrl url=original.url().newBuilder()  
                .addQueryParameter("count", "5")    
                .addQueryParameter("start", "0")          
                .build();   
//添加请求头
      Request request = original.newBuilder()     
               .addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")         
               .addHeader("Connection", "keep-alive")    
               .method(original.method(), original.body())   
               .url(url)   
              .build();     
      return chain.proceed(request); 
   }}
  • 使用BaseInterceptor
public static final String BASE_URL = "https://api.douban.com/v2/movie/";
//此类Http工具类
public HttpClient() {   
     OkHttpClient.Builder client = new OkHttpClient.Builder();   
     client.connectTimeout(5, TimeUnit.SECONDS);    
     client.addInterceptor(new BaseInterceptor());   
     retrofit = new Retrofit.Builder().
        baseUrl(BASE_URL)
        .client(client.build())
        .addConverterFactory(GsonConverterFactory.create())
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
        .build();  
     service = retrofit.create(MovieService.class);
}
-
  //此类 retrofit api service
   public interface MovieService { 
     @POST("in_theaters")    
     Observable<BaseResponse<List<MovieResponse>>> getMovie();
}

亲测可以使用,返回结果 count=5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值