java.lang.IllegalStateException: Already executed.

这里出错是retrofit请求的时候报错,并且不知道怎么出现的。也是困扰了好久,百度上是没法找到的,万事找stackoverflow.com就好了,里面基本上有答案。

call.execute().body();

上面是报错的地方,执行到这里就报错了硬是头痛啊。为啥回报这个错误呢,是因为这个方法在retrofit2.0之后,该请求只能调用一次,如果再次调用就会报:

java.lang.IllegalStateException: Already executed.

这个错误。附上链接:

Retrofit “IllegalStateException: Already executed”

Retrofit2.0 新特性简介  这个写的很好,可以仔细研究一下。

解决方法:

1 call.clone().enqueue(..)

2 call.clone().execute() 使用克隆实体方法

call.cancel 最后还是取消请求,多半是没有取消出现的问题。

附上别人写的代码:

Call> call = gitHubService.repoContributors("square", "retrofit");
Call> cloneCall = call.clone(); //克隆相同请求
call.enqueue( new Callback>() {
              @Override void onResponse(/* ... */) {
                // ...
              }

              @Override void onFailure(Throwable t) {
                // ...
              }
            } );//异步请求
// or...
cloneCall.execute();//同步请求

// later...
call.cancel(); //取消请求
cloneCall.cancel(); //取消请求

希望有所帮助!

你可能感兴趣的:(android,个人经历)