这里出错是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<List<Contributor>> call = gitHubService.repoContributors("square", "retrofit");
Call<List<Contributor>> cloneCall = call.clone(); //克隆相同请求
call.enqueue( new Callback<List<Contributor>>() {
@Override void onResponse(/* ... */) {
// ...
}
@Override void onFailure(Throwable t) {
// ...
}
} );//异步请求
// or...
cloneCall.execute();//同步请求
// later...
call.cancel(); //取消请求
cloneCall.cancel(); //取消请求
希望有所帮助!