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

SpringWebFluers的WebClient

杨骁
2023-03-14

我真的不知道如何正确地将下面的调用转换为SpringWebFlux webclient。

userIds是列表,我可以使用以下语法调用该服务,但我无法使用SpringWebFlux WebClient。如果你们中有人知道怎么做,请帮助我。

String url = "http://profile.service.com/v1/profiles/bulk";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));

ResponseEntity<List<MiniProfile>> responseEntity;
try {
    responseEntity = restTemplate.exchange(url, HttpMethod.POST, new 
    HttpEntity(userIds, headers), new 
    ParameterizedTypeReference<List<MiniProfile>>() {});
} catch (RestClientException e) {
    responseEntity = new ResponseEntity<List<MiniProfile>>(HttpStatus.OK);
}

return responseEntity.getBody();

这是我将其翻译到Webflux WebClient的方式:

Flux<String> flux = Flux.fromIterable(userIds);
return readWebClient.post().uri("/v1/profiles/bulk")
      .body(BodyInserters.fromPublisher(flux, String.class))
      .retrieve().bodyToFlux(MiniProfile.class);

共有3个答案

左丘照
2023-03-14

**您可以参考下面提到的代码片段**

WebClient.post().uri(endPointUrl)
           .contentType(MediaType.APPLICATION_XML)
          .body(Mono.just(xmlEntity), String.class)
          .retrieve()
荆学民
2023-03-14

使用. body Value(userIds). syncBody(userIds)(已弃用)代替带Body插入器的body

辛建业
2023-03-14

你不应该改变你的列表到流量,你应该发送它作为列表像这样

return readWebClient.post()
  .uri("/v1/profiles/bulk")
  .syncBody(userIds)
  .retrieve()
  .bodyToFlux(new ParameterizedTypeReference<List<MiniProfile>>() {})
  .flatMapIterable(Function.identity());

此代码未经测试,但原理相同

 类似资料:
  • 我正在编写一个Spring5Web应用程序,我的要求是获得一个url编码的表单,并将url编码的响应发送回来 这是路由器功能代码 这是我的处理程序代码 这是我得到的错误 2020-04-07 02:37:33.329调试38688---[ctor-http-nio-3]组织。springframework。网状物HttpLogging:[07467aa5]已解决HTTP POST/formnew的

  • 我创建了spring boot 2.0演示应用程序,其中包含两个使用WebClient进行通信的应用程序。当我从WebClient的响应中使用Flux的block()方法时,它们经常停止通信。由于某些原因,我想使用列表而不是通量。 服务器端应用程序是这样的。它只返回Flux对象。 而客户端(或BFF端)应用程序是这样的。我从服务器获取Flux,并通过调用block()方法将其转换为List。 虽然

  • 问题内容: 我经常去一个网站查找东西。我对自己心想:“继续。我可以编程。当我可以编写一个可以为我做的软件时,为什么要手动进入该站点?”。 所以我开始了。我正在使用C#,所以我找到了WebClient和Uri。 我已经设法获取了该站点的源代码,但是问题出在加载源代码之后,我要查找的特定数据是通过AJAX生成的。 那就是我的问题。如果需要先通过AJAX调用来请求,该如何获取该代码? 问题答案: 通用方

  • 我正在使用Spring 5 WebClient进行一个外部api调用,希望将响应映射到这样的Object: 但是我收到一个错误: 但是,如果我像这样将响应正文提取到字符串: 然后它就正常工作了。有什么办法解决这个问题吗? 编辑: 响应正文: 标题:

  • 关于Spring WebFlow WebClient的小问题,尤其是如何配置一个使用TLSv1.2发送出站请求的问题。 我的应用程序是Spring WebFlow 2.4.2,其中启用了HTTP/2、SSL、mTLS和TLSv1.3。 注意它是TLSv1。3,而不是设置上的TLSv1,2。 创建WebClient实例时: 并使用它向TLSv1发送请求。3启用服务器,工作正常,非常开心。 但是,我需

  • 我有一个顶点,它有一个处理程序,可以在事件循环线程中调用Vertx的Web客户端。实际的底层API调用是同步的还是异步的?它会阻塞我的事件循环线程吗?假设我的API调用需要30秒才能返回。 我是否需要用Vertx.execute阻塞(p-