diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/io/stream/SyncInputStream.java b/hutool-core/src/main/java/org/dromara/hutool/core/io/stream/SyncInputStream.java index 67d856978..1b41760c2 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/io/stream/SyncInputStream.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/io/stream/SyncInputStream.java @@ -21,12 +21,7 @@ import org.dromara.hutool.core.io.IoUtil; import org.dromara.hutool.core.io.StreamProgress; import org.dromara.hutool.core.text.StrUtil; -import java.io.ByteArrayInputStream; -import java.io.EOFException; -import java.io.FileNotFoundException; -import java.io.FilterInputStream; -import java.io.InputStream; -import java.io.OutputStream; +import java.io.*; /** * 同步流,可将包装的流同步为ByteArrayInputStream,以便持有内容并关闭原流 diff --git a/hutool-http/src/main/java/org/dromara/hutool/http/client/body/ResponseBody.java b/hutool-http/src/main/java/org/dromara/hutool/http/client/body/ResponseBody.java index 7bb23cc86..974962885 100644 --- a/hutool-http/src/main/java/org/dromara/hutool/http/client/body/ResponseBody.java +++ b/hutool-http/src/main/java/org/dromara/hutool/http/client/body/ResponseBody.java @@ -92,8 +92,11 @@ public class ResponseBody implements HttpBody, Closeable { * * @return 响应内容bytes */ + @SuppressWarnings("resource") @Override public byte[] getBytes() { + // issue#IANZ38 同步数据到内存 + sync(); return this.bodyStream.readBytes(); } diff --git a/hutool-http/src/test/java/org/dromara/hutool/http/client/IssueIANZ38Test.java b/hutool-http/src/test/java/org/dromara/hutool/http/client/IssueIANZ38Test.java new file mode 100644 index 000000000..481b030d7 --- /dev/null +++ b/hutool-http/src/test/java/org/dromara/hutool/http/client/IssueIANZ38Test.java @@ -0,0 +1,26 @@ +package org.dromara.hutool.http.client; + +import org.dromara.hutool.core.lang.Console; +import org.dromara.hutool.http.client.engine.ClientEngineFactory; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +public class IssueIANZ38Test { + + @Test + @Disabled + void toStringTest() { + final Request request = Request.of("https://hutool.cn/"); + try(final Response response = ClientEngineFactory.createEngine("JdkClient").send(request)) { + final String bodyStr = response.bodyStr(); + + Console.log(bodyStr); + // 读取过一次bodyStr后,再读取就关闭流了,此处做修改,读取body时同步响应body到内存 + Console.log(response.toString()); + } catch (final IOException e) { + throw new RuntimeException(e); + } + } +}