小编Ote*_*ten的帖子

如何在Spring Webflux Java中记录请求正文

我在 POST 请求中收到一些 XML 有效负载,并希望看到接收到的有效负载以进行调试。

下面(我的自定义 WebFilter)代码按预期记录了 URI 和请求标头,但没有记录请求正文/有效负载,我的反应式代码一定有问题 -

       final ServerHttpRequest request = exchange.getRequest();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        LOGGER.info("Request: uri={}", request.getURI());
        LOGGER.info("Request: headers={}", request.getHeaders().entrySet());
        request.getBody().doOnNext(dataBuffer -> {
            try {
                Channels.newChannel(baos).write(dataBuffer.asByteBuffer().asReadOnlyBuffer());
                String body = new String(baos.toByteArray());
                LOGGER.info("Request: payload={}", body);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    baos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

我查看了布赖恩对下面帖子的回复并遵循了它,但由于没有代码,我可能犯了一些愚蠢的错误

如何在 Spring WebFlux 中记录请求和响应主体

更新代码

@Configuration
public class RequestFilter implements WebFilter {

    private static final Logger LOGGER = …
Run Code Online (Sandbox Code Playgroud)

java spring-boot project-reactor spring-webflux

0
推荐指数
1
解决办法
4575
查看次数