当前位置: 首页 > 知识库问答 >
问题:

如何使用spring web客户端响应

段成益
2023-03-14

我正在spring应用程序中使用web客户端

我在执行相同操作时面临内存泄漏问题

我正在使用下面的代码获取来自服务的非2xx响应的响应体:

return client.get()
                .uri(uriString)
                .headers(ServiceCommonUtil.getHttpHeaderConsumer(headersMap))
                .exchange()
                .flatMap(clientResponse -> {
                    try {
                        clientResponse.body((clientHttpResponse, context) ->
                                clientHttpResponse.getBody());
                        logResponseStatus(clientResponse.statusCode(), serviceName);
                        return clientResponse.bodyToMono(String.class);
                    } catch (Exception e) {
                        return null;
                    }

                })
responseMono.subscribe(response -> {
    //process response string
},error->{
    //process error response
});

我的问题是,如果我在responseMono上使用dispose方法,处理过程需要很长的时间,而没有它,我会面临内存泄漏问题。我在这里做错什么了吗?

共有1个答案

孙莫希
2023-03-14

是的,实际上您并不是在抛出异常的情况下完成响应。

如果要使用exchange(),您的责任是消耗响应。参见:文档

请查看“ClientResponse”API中的TobodilessEntity()/ReleaseBody()

 类似资料:
  • 在SpringJSFWeb应用程序中将Netty客户端处理程序配置为消息接收点,有没有具体的方法? 如果一些独立的Java应用程序充当Netty服务器,我如何接收到SpringJSFWeb应用程序的消息?

  • 我想在Spring WebClient请求链接中发送链接请求参数。例如: https://www.test.com/notification?con=41280440000097 我尝试了以下代码: 但是当我试图设置映射时,我在标记

  • 我有spring boot控制器 在其中,我使用服务,该服务反过来使用ktor客户端向外部服务器发送post请求,该服务器应响应发送csv文件。csv文件内容取决于我在myObjectRq中发送的值。 服务: 正确设置响应的标头,以及日志。方法中的info(String(response.content.toByteArray())打印出接收文件的内容,但我不能将其设置为HttpServletRe

  • 我尝试为我的网站提供文件上传/下载服务,并且尝试使用openstack中的对象存储。问题是,我通过php和openstack PHPSDK做这件事没有问题,但是当我试图通过一些javascript做这件事时,我找不到一个好的sdk或方法。我没有使用node,我有一个php服务器和一个javascript客户端。我想直接从javascript客户端上传或下载文件。我不希望文件通过php服务器传输。我

  • 在调用writeAndFlush()之后,我不知道如何从服务器检索响应;我该怎么办? 我也使用Netty 4.0.18.final

  • 问题内容: 我正在尝试通过OkHttp(2.3.0)缓存Retrofit(v 1.9.0)完成的http调用的响应。如果我尝试在没有互联网的情况下拨打电话,它总是打网络电话。 RestClient OkHttpSingleTonClass 我的活动 我遵循了这一点。但是我无法工作。它只是从服务器上命中。我究竟做错了什么? 问题答案: 根据使用的翻新版不支持缓存。我们必须使用Square 库的实例。