Closed cnmao closed 6 years ago
// If we already have a stream, confirm that this is the only call to chain.proceed().
if (this.httpCodec != null && calls > 1) {
throw new IllegalStateException("network interceptor " + interceptors.get(index - 1)
" must call proceed() exactly once"); }
// Call the next interceptor in the chain. RealInterceptorChain next = new RealInterceptorChain(interceptors, streamAllocation, httpCodec, connection, index + 1, request, call, eventListener, connectTimeout, readTimeout, writeTimeout); Interceptor interceptor = interceptors.get(index); Response response = interceptor.intercept(next);
// Confirm that the next interceptor made its required call to chain.proceed(). if (httpCodec != null && index + 1 < interceptors.size() && next.calls != 1) { throw new IllegalStateException("network interceptor " + interceptor
https://github.com/JessYanCoding/MVPArms/blob/master/demo/src/main/java/me/jessyan/mvparms/demo/app/GlobalHttpHandlerImpl.java#L74 ,注释已经说的很清楚了,在 onHttpResultResponse() 之前 proceed() 已经被调用过了
@JessYanCoding 嗯 解决了 不过加了两天班 O(∩_∩)O哈哈~ 很好的框架
if (null != data && !TextUtils.isEmpty(data.getAccessToken())) { SpUtils.saveToken(context, data.getAccessToken()); SpUtils.saveRefToken(context, data.getRefreshToken());
Request request1 = chain.request();
Request.Builder builder = request1.newBuilder();
builder.removeHeader("X-Auth-Token")
.header("X-Auth-Token", data.getAccessToken())
.removeHeader("User-Agent")
.header("User-Agent", WebSettings.getDefaultUserAgent(context))
.removeHeader("X-Requested-With")
.header("X-Requested-With", "XMLHttpRequest")
.build();
Response execute = okHttpClient.newCall(request1).execute();
// networkResponse != null if (execute.code() == HTTP_OK) { ResponseBody body2 = execute.body(); String bodyString = body2.string(); okhttp3.MediaType contentType = body2.contentType(); return response.newBuilder().body(ResponseBody.create(contentType, bodyString)).build(); } return execute; }
... 你这代码不是和注释里描述的几乎一样吗,你早认真看注释不就早解决了
哈哈 是呀 , 最后那个networkResponse != null 我整了好半天 。 但是现在还不知道 我是怎么解决的 。 他好像每次都是拿 cacheResponse 里边的 , 然后一直报这个警告 。 ResponseErrorListenerImpl 中 的msg 报 “未知错误” 。 所以就有了 上边的 execute.code() == HTTP_OK 的代码 。 应该是重新包装的意思吧?(猜想的!!!) @JessYanCoding
Look at here
Environment
Bug Description:
Related Code:
Bug Log:
Others:
检查到 999 token过期 通过refreshToken 获取最新token 但是: 无法自动的请求原来的那个接口 ,
现象: token过期 , 请求下个接口 出现 上边的错误 ,然后 空白页, 需要手动刷新 才会出来数据