前言
有时候我们需要为app中的http网络请求添加一些通用参数,比如当前应用版本、某些key值等,一般来说我们都会使用OkHttp的拦截器进行操作,所以下面就简单介绍下如何实现
实现
首先我们得知道参数一般都在哪里。对于GET请求,参数一般是拼接在url的后面,对于POST请求则分为两种。一种是表单提交,一种是参数Body中提交,对于参数在Body中的,我们暂时不考虑,因为判断有点困难。
对于GET请求,我们直接拼接到Url的后面,需要注意的是:我们需要删除同名的参数,不然如果外面也传递了通用参数,那么后台会将此字段的value使用逗号拼接在一起。(类似于version=1.1.1,1.2.2)
private static final Map sCommonParams = new HashMap<>();
private Request injectParamsIntoUrl(Request request) {
Request.Builder requestBuilder = request.newBuilder();
HttpUrl.Builder httpUrlBuilder = request.url().newBuilder();
for (Map.Entry entry : sCommonParams.entrySet()) {
httpUrlBuilder.removeAllQueryParameters(entry.getKey());
httpUrlBuilder.addQueryParameter(entry.getKey(), entry.getValue());
}
requestBu