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

查看:194
本文介绍了java - okhttp 使用response.code()之后不能使用response.body()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

                        @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
错误

解决方案

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

这篇关于java - okhttp 使用response.code()之后不能使用response.body()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆