解决okhttp报java.lang.IllegalStateException: closed,java.lang.IllegalStateException: closed

简介: 解决okhttp报java.lang.IllegalStateException: closed,java.lang.IllegalStateException: closed

closed,原因为OkHttp请求回调中response.body().string()只能有效调用一次

在调用了response.body().string()方法之后,response中的流会被关闭,我们需要创建出一个新的response给应用层处理。不多说直接贴代码:

1.       @Override
    public Response intercept(Chain chain) throws IOException
    {
        Request request = chain.request();
        logForRequest(request);
        Response response = chain.proceed(request);
       MediaType mediaType = response.body().contentType();
        String content= response.body().string();
        Log.e("tag", content);
        return response.newBuilder()
                .body(ResponseBody.create(mediaType, string))
                .build();
      // return logForResponse(response);
目录
相关文章
|
11月前
|
应用服务中间件
快速解决idea启动项目报错:Unable to open debugger port(127.0.0.1:58950):java.net.SocketException“socket closed
快速解决idea启动项目报错:Unable to open debugger port(127.0.0.1:58950):java.net.SocketException“socket closed
662 0
|
SQL HIVE
Caused by: java.io.IOException: Filesystem closed的处理
org.apache.hadoop.hive.ql.metadata.HiveException: Unable to rename output from: hdfs://nameservice/user/hive/warehouse/om_dw.
3138 0
|
3月前
|
JavaScript Serverless API
Serverless 应用引擎操作报错合集之在Serverless 应用引擎中,FC3.0读取response body的时候出现错误提示"Caused by: java.io.IOException: closed"如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
108 3
|
3月前
|
SQL 关系型数据库 MySQL
java.sql.SQLException: No operations allowed after statement closed.
java.sql.SQLException: No operations allowed after statement closed.
134 0
|
3月前
|
监控 应用服务中间件
idea debug模式启动Tomcat报错:Error running ‘tomcat8‘: java.net.SocketException “socket closed“
idea debug模式启动Tomcat报错:Error running ‘tomcat8‘: java.net.SocketException “socket closed“
126 0
SpringBoot项目中使用request.getInputStream()获取参数时出现java.io.IOException: Stream closed
@RequestBody注解会先调用request.getInputStream()这个方法获取参数,然而request.getInputStream()这个流只能被读取一次,所以我们再次读取这个流就会报错。 解决方案: 最简单的方案就是 先读取流,然后在将流写进去就行了
|
SQL Java 关系型数据库
java.sql.SQLException: No operations allowed after statement closed.
java.sql.SQLException: No operations allowed after statement closed. 原因很简单:这里和数据库的连接Connection是一个Static的,程序共享这一个Connection。
16563 0
|
Java Apache
java.io.IOException: The stream is closed
java.io.IOException: The stream is closed at org.apache.commons.compress.archivers.zip.
2240 0