首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring webclient抛出块不支持异常

Spring webclient抛出块不支持异常
EN

Stack Overflow用户
提问于 2020-05-16 14:05:31
回答 1查看 471关注 0票数 1

我正在尝试从spring-boot发出一个HTTP调用。这个呼叫在post man中运行良好,下面是呼叫的curl版本,

代码语言:javascript
复制
curl --location --request POST 'https://sampletest.com:8811/rest/oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Accept: application/json' \
--data-urlencode 'client_id=126763****ghsei99****' \
--data-urlencode 'client_secret=126763****ghsei99****' \
--data-urlencode 'param1=pppp' \
--data-urlencode 'param2=pppp'

但是我想用WebClient打同样的电话。

代码语言:javascript
复制
WebClient webClient = WebClient.builder().baseUrl("https://sampletest.com:8811")
                    .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE).build();

            MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
            formData.add("client_id","126763****ghsei99****");
            formData.add("client_secret", "126763****ghsei99****");
            formData.add("param1","pppp");
            formData.add("param2","pppp");

            AuthenticationResponseBean authenticationResponseBean = webClient.post().uri("/rest/oauth/token").body(BodyInserters.fromFormData(formData))
                    .retrieve().bodyToFlux(AuthenticationResponseBean.class).blockLast();

但是,应用程序正在抛出异常,

java.lang.IllegalStateException:块()/blockFirst()/blockLast()阻塞,线程反应器-http-nio-3不支持这种阻塞。

这里出什么问题了?我对reactive-programming非常陌生,谷歌搜索问题表明为什么需要block

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2020-05-16 16:13:07

根据我的理解,阻塞实际上阻塞了线程。来自ProyectReactor文档

  • “无限期阻塞,直到上游发出信号表示其最后值或完成为止”。

所以,如果你不需要阻塞,或者你不需要等待最后一个元素,你就不需要它。因此,只要订阅就可以了,这取决于您的需求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61838062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档