I will post again as it seems to be caused by RestClient.

Environment: Spring Web 6.1.8, Java 17

The situation is the same as in #31719, which occurs when using Reactor Netty.

Test code: https://github.com/r16turbo/restclient-test/blob/main/src/test/java/com/example/demo/DemoApplicationTests.java 👆 Fails in the last test case (reactorNettyTest).

The reason is that the following code throws an exception:

https://github.com/spring-projects/spring-framework/blob/v6.1.8/spring-web/src/main/java/org/springframework/http/client/ReactorNettyClientResponse.java#L85

I believe that null should also be returned when using Reactor Netty, please let me know about a better way to implement this.

Example of a simple fix: (However, Java 11 or higher is required)

    @Override
    public InputStream getBody() throws IOException {
        InputStream body = this.body;
        if (body != null) {
            return body;
        }

        body = this.connection.inbound().receive()
                .aggregate().asInputStream().block(this.readTimeout);
        if (body == null) {
            // throw new IOException("Could not receive body");
            body = InputStream.nullInputStream();  // 👈 here
        }
        this.body = body;
        return body;
    }

Thanks

Comment From: bclozel

duplicates #32805