这个问题可能是因为在Interceptor中调用了chain.proceed(origin),导致请求被执行了两次。可以尝试将这行代码移到添加完Header之后再执行,即:
public Response intercept(Chain chain) throws IOException {
//获取request
Request origin = chain.request();
//从request中获取原有的HttpUrl实例oldHttpUrl
String url = origin.url().url().toString();
//获取request的创建者builder
Request.Builder request = origin.newBuilder();
//添加Header
if (sp == null) {
sp = Util.getSharedPreferences(Application.getContext());
}
String baseUrl = sp.getString(GlobalParameters.IRecordTimeBaseUrl, GlobalParameters.IRECORDTIME_URL);
String token = sp.getString(GlobalParameters.IRecordTimeAccessToken, GlobalParameters.IRecordTime_Access_token);
if (baseUrl != null && url.startsWith(baseUrl) && !url.contains("auth") && !TextUtils.isEmpty(token)) {
request.addHeader("Authorization", "Bearer " + token)
.addHeader("Content-Type", "application/json;charset=UTF-8");
Log.d("fka121fadfa", "response.code=" + response.code());
}
//执行请求
Response response = chain.proceed(request.build());
return response;
}
这样就可以避免重复请求的问题。