okhttp 使用response.code()之后不能使用response.body()

发布于 2022-09-03 15:32:23 字数 1518 浏览 17 评论 0

                        @Override
                        public void onResponse(Call call, Response response) throws IOException {
                            Log.d(logTag, String.valueOf(response.code()));
                            if (response.code() == 404) {
                                throw new IOException(String.format("请求缺少IMEI参数,response code:%s", response.code()));
                            } else if (response.code() == 405) {
                                Message message = new Message();
                                message.what = 3;
                                handler.sendMessage(message);
                                throw new IOException(String.valueOf(response.code()));
                            } else if (response.body().string() == "IMEIForbidden") {
                                Message message = new Message();
                                message.what = 4;
                                handler.sendMessage(message);
                                throw new IOException(String.valueOf(response.code()));
                            } else if (!response.isSuccessful()) {
                                throw new IOException(String.format("请求版本时网络异常,response code:%s", response.code()));
                            }

                            LastVersion = response.body().string();
                            

如上述代码,我想先根据返回的code判断是哪些情况,然后获取body中的String,结果报
java.lang.IllegalStateException: closed
错误

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫腻 2022-09-10 15:32:23

} else if (response.body().string() == "IMEIForbidden") {
并不是code()的原因,而是这句代码的原因吧。body()只能读取一次。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文