要为所有的 Retrofit 调用添加请求体参数,可以使用 Retrofit 的拦截器来实现。下面是一个示例的解决方法。
首先,创建一个实现 Interceptor
接口的类,用于拦截请求并添加请求体参数。例如,创建一个名为 ParameterInterceptor
的类:
import java.io.IOException;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
public class ParameterInterceptor implements Interceptor {
// 请求体参数名称
private static final String PARAM_NAME = "your_param_name";
// 请求体参数值
private static final String PARAM_VALUE = "your_param_value";
@Override
public Response intercept(Chain chain) throws IOException {
Request originalRequest = chain.request();
// 添加请求体参数
Request modifiedRequest = originalRequest.newBuilder()
.url(originalRequest.url().newBuilder()
.addQueryParameter(PARAM_NAME, PARAM_VALUE)
.build())
.build();
return chain.proceed(modifiedRequest);
}
}
然后,在创建 Retrofit 实例时,使用 OkHttpClient
的 addInterceptor()
方法添加拦截器:
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class RetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getClient(String baseUrl) {
OkHttpClient client = new OkHttpClient.Builder()
// 添加拦截器
.addInterceptor(new ParameterInterceptor())
.build();
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
}
return retrofit;
}
}
现在,通过调用 RetrofitClient.getClient()
方法来获取 Retrofit 实例,所有的请求都会自动添加请求体参数。
注意:在示例代码中,PARAM_NAME 和 PARAM_VALUE 分别表示请求体参数的名称和值,你需要根据实际情况进行修改。