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

如何转换Spring WebClient响应响应实体?

方增
2023-03-14

我可以使用toEntity()方法返回ResponseEntity,如下所示:

@GetMapping("/uri")
public Mono<ResponseEntity<Data[]>> methodName() {
    return webClient
            .get()
            .uri("http://localhost:8088/externalService")
            .accept(MediaType.APPLICATION_JSON)
            .retrieve()
            .toEntity(Data[].class);
}

但是我想在返回之前处理响应头。上面的代码将WebClient响应转换为响应实体并立即返回,但我想将其存储在响应实体变量中,处理它,然后返回响应实体。

我提到了这个-

当我试图将其存储在varibale中时,我遇到了这个错误-

共有1个答案

潘国源
2023-03-14

您可以简单地使用Reator的map运算符来修改标头:

return webClient
        .get()
        .uri("http://localhost:8088/externalService")
        .accept(MediaType.APPLICATION_JSON)
        .retrieve()
        .toEntity(Data[].class)
        .map(responseEntity ->  responseEntity.getHeaders().add("header", "header-value");

或者,您可以使用. Handell运算符来提供响应处理:

.handle((responseEntity, sink) -> {
        if(!isValid(responseEntity)){
            sink.error(new InvalidResponseException());
        } else if (isOk(responseEntity))
            sink.next(responseEntity);
        }
        else {
            //just ignore element
        }
    })
 类似资料:
  • 我正在尝试使用Web客户端创建REST调用 我只想记录通话结果。成功时 - 使用响应正文记录成功消息,在 5XX 或超时或其他时 - 记录错误消息。日志应该在后台创建(而不是由创建调用的线程创建)但是每次都会执行,工作正常,但也有 记录在日志文件中。 我也在一些教程中看到过方法,但在我的设置中有这样的方法。 如何记录成功和失败消息?

  • 我可以使用现在已弃用的方法将WebClient响应转换为响应实体。 请建议实现相同结果的其他方法。下面是我的代码。

  • 我通过扩展改型回调生成了类。我想将响应解析为字符串。在我的例子中,每个响应都得到这种类型的JSON对象。在成功回应的情况下: 万一发生故障响应 如何将响应体转换为JsonObject,以便检查字段“success”:并在成功时导航各自方法--onResponseSuccess(Call Call,response response);在失败时导航onResponseFailure(Call Cal

  • 本文向大家介绍AngularJS转换响应内容,包括了AngularJS转换响应内容的使用技巧和注意事项,需要的朋友参考一下 从远程API获取到的响应内容,通常是json格式的,有时候需要对获取到的内容进行转换,比如去除某些不需要的字段,给字段取别名,等等。 本篇就来体验在AngualrJS中如何实现。 在主页面,还是从controller中拿数据。 以上,userName, url字段是从源数据中

  • 我在使用WireMock时遇到了一个问题,我已经扩展了< code>ResponseTransformer并实现了所有需要的方法,如下所示: 现在我想将这个特定的变压器应用于我写的存根之一,存根如下所示: 当我启动服务并执行后调用时,我确实看到应用了转换器,但响应实际上并没有被转换。在启动服务时,我也尝试在config部分应用transformer,但这无济于事。 因此,我的问题是,我应该如何正确

  • 问题内容: 我无法将SOAP响应转换为php中的Array。 这是代码 这是SOAP响应。 我使用以下方法将其转换为数组,但输出为空。 请给我建议。 问题答案: 终于我找到了解决方案 我们可以通过以下方式从SOAP获得响应主体 范例1: 示例2: