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

使用webclient使用外部api

龙珂
2023-03-14

我有网址列表。我正在尝试从这些api中使用jsondata。下面是我尝试过的代码,但我得到了Mono.flatMapMany-

如果我使用. block(),我将为这些api获取jsonData,但问题是当我使用. block()时它变得同步。我希望它是异步的。有人能帮我吗?

提前谢谢。

List<String> urls=getUrls();
Flux<String> k=null;
for(int i=0;i<urls.size();i++){
    k=webClientBuilder.
      build.get().
      uri(urls.get(i)).retrieve().
      bodyToFlux(String.class);
}

共有1个答案

哈涵容
2023-03-14

您提供的代码片段有一些问题,因此我建议您首先阅读项目Reactor参考留档

下面的代码片段有望实现您想要的功能。尽管如果希望将其作为反应性管道的一部分运行,您将希望从此方法返回通量,而不是订阅。底层框架(本例中为spring boot)将启动订阅。

        List<String> urls = Arrays.asList("https://google.com", "https://yahoo.com");
        WebClient webClient = WebClient.builder().build();

        Flux.fromStream(urls.stream())
                .flatMap(url -> webClient.get()
                        .uri(url)
                        .retrieve()
                        .bodyToMono(String.class))
                .doOnNext(s -> System.out.println("Response: " + s))
                .subscribe();
 类似资料:
  • 我必须调用api使用生成。我将在中发送令牌。我通过网络获得了一些,但我不知道如何与API一起传递参数。有人能帮忙吗? 我需要调用docusign apihttps://account-d.docusign.com/oauth/token 此外,我需要发送和。我不知道如何收到这个。有人能举个例子吗?以下是供参考的图像。 在此处输入图像描述

  • 我希望托管在 Openshift 集群中的应用程序面向外部 REST API,而无需在客户端应用程序中硬编码 IP/PORT,并且能够在不重新交付应用程序的情况下更改 IP/PORT。 我设法通过ConfigMap做到了这一点,但我看到也可能通过OpenShift doc中的服务做到这一点。 然而,我没有设法理解它是如何工作的。我做了以下操作: 在第一个curl中,使用endpoint中定义的地址

  • 问题内容: 我正在尝试查找WebClient使用的示例。我的目标是使用Spring 5 WebClient使用https和自签名证书查询REST服务 有什么例子吗? 问题答案: 切勿在生产中使用此TrustManagerFactory。它仅用于测试目的,因此非常不安全。

  • 我看到这篇文章给出了使用WebClient将文件上传到ftp的简单想法。这很简单,但如何强制它使用SSL?

  • 我正在完成一个项目,我必须将它部署为一个jar文件,在eclipse中它工作得很好,我的项目依赖于两个库,这两个库也都依赖于dll文件。我已经将这些DLL的路径添加到每个外部JAR的本机库位置。然后,我使用eclipse可运行的jar文件导出向导将project导出为一个jar文件我在指定的位置得到了jar文件,它运行了,但是当我单击一个调用我得到的库之一的按钮时,我得到了java.lang.Un

  • 问题内容: 我需要使用标题检查是否打开了一个外部窗口(另一个Java程序,但不受我正在使用的程序控制),如果打开了,则根据Java中的用户命令将其最大化或最小化(我只知道窗口的标题,什么也不知道)。Google只说我可以用来获取窗口句柄并使用该句柄对其进行操作,但是我找不到如何执行此操作。 我可以在此处找到有关如何使用JNI的参考: 在JavaSwing中,如何获取对窗口的Win32窗口句柄(hw