OKhttp之ResponseBody.string()返回NULL

时间:2024-03-14 09:29:19

问题描述:使用responsebody.string()方法获取的数据为NULL。如下面代码:

OKhttp之ResponseBody.string()返回NULL

通过如下代码测试

OKhttp之ResponseBody.string()返回NULL

打印结果为:

OKhttp之ResponseBody.string()返回NULL

发现第一调用responsebody.string()有数据返回,而第二次却返回NULL,从而导致JSON解析失败。

接下来分析responsebody中的string方法

OKhttp之ResponseBody.string()返回NULL

只有短短的6,7行代码。

BufferedSouce对它的介绍为(谷歌翻译了以下大概就是:内部存储缓冲区,用于读取数据(服务端所返回的数据)的)

重点看一下finally中所调用的closeQuietyle(所传参数就是上面所说的BufferedSouce)方法

OKhttp之ResponseBody.string()返回NULL

到这豁然开朗,方法中首先判空,然后关闭了BufferedSouce。所以在我第二次调用string方法时返回为null.

解决代码

OKhttp之ResponseBody.string()返回NULL

到此结束。