版权声明:需要转载的朋友下面留个言 https://blog.csdn.net/weixin_42955598/article/details/85925918
IllegalStateException: closed okhttp报错
今天使用http调用接口报错 IllegalStateException: closed
2019-01-06 13:51:24.729 ERROR 8364 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: closed] with root cause
java.lang.IllegalStateException: closed
at okio.RealBufferedSource.rangeEquals(RealBufferedSource.java:377)
at okio.RealBufferedSource.rangeEquals(RealBufferedSource.java:371)
at okhttp3.internal.Util.bomAwareCharset(Util.java:412)
at okhttp3.ResponseBody.string(ResponseBody.java:173)
查看代码
//判断请求是否成功
int status = response.code();
logger.debug("请求状态码为:" + status);
if(response.isSuccessful()){
//打印服务端返回结果
logger.debug("请求成功结果为:" + response.body().string());
return response.body().string();
}
可以看到 response.body().string() 出现了两次 , **response.body().string()只能请求一次,**请求过后,就会关闭,再次调用response.body().string()就会报close异常,所以String data = response.body().string();
使用变量接收数据,就可以解决这个问题。