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<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(); //取消请求

希望有所帮助!

引用\[1\]:在调试程序bug的过程中,出现了java.lang.IllegalStateException: Already connected的异常。这个异常的主要原因有两种。一种是将connection.setInput()放在了connection.connect()的后面,另一种是在get请求中设置了connection.DoOutput()。\[1\]引用\[3\]:在查看了一些RequestProperties相关的方法后,发现在判断connected是否为true的时候,会导致java.lang.IllegalStateException: Already connected异常的出现。\[3\] 这个异常的解决方法有几种。首先,确保在调用connection.connect()之前设置connection.setInput()。其次,如果是在get请求中,不要设置connection.DoOutput()。最后,可以尝试关闭防火墙,因为有时候防火墙的设置可能会导致这个异常的出现。在Linux下关闭防火墙的命令是service iptables stop。\[2\] #### 引用[.reference_title] - *1* [java.lang.IllegalStateException: Already connected](https://blog.csdn.net/bell10027/article/details/50417161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [java.lang.IllegalStateException: Failed to register dubbo://139.224.33.130:20881](https://blog.csdn.net/nxg0916/article/details/123129968)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【BUG】IllegalStateException:Already connect](https://blog.csdn.net/guafengzhetian_Tu/article/details/119795388)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值