这是安卓okhttp中,Interceptor的一段代码@Override public Response intercept(Chain chain) throws IOException { //获取reques

动态 未结 0 101
小小草
小小草 LV1 2023年9月23日 23:40 发表
这个问题可能是因为在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; } 这样就可以避免重复请求的问题。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复