加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java-为什么当响应具有HTTP错误状态代码时,为什么只允许一个连接

发布时间:2020-12-14 19:24:53 所属栏目:Java 来源:网络整理
导读:在休息请求中,我使用Spring WebClient将另一个请求发送到Web服务,并想将结果返回给调用者: return webClient.post() .uri(url) .body(...) .retrieve() .bodyToMono(String::class.java) .map { ResponseEntity.ok(it) } 现在,Web服务返回了HTTP错误状态代

在休息请求中,我使用Spring WebClient将另一个请求发送到Web服务,并想将结果返回给调用者:

return webClient.post()
  .uri(url)
  .body(...)
  .retrieve()
  .bodyToMono(String::class.java)
  .map { ResponseEntity.ok(it) }

现在,Web服务返回了HTTP错误状态代码,我收到以下错误:

java.lang.IllegalStateException: Only one connection receive subscriber allowed.

返回状态码200时,不会引发任何错误.

我还尝试检查状态并自己引发异常,但是行为仍然相同:

return webClient.post()
  .uri(url)
  .body(...)
  .retrieve()
  .onStatus(HttpStatus::isError) { clientResonse ->
     clientResonse.bodyToMono(String::class.java)
        .map { RuntimeException(it) }
  }
  .bodyToMono(String::class.java)
  .map { ResponseEntity.ok(it) }

我究竟做错了什么?

代码示例在Kotlin中,但我认为每个Java开发人员都可以阅读它:)

最佳答案
这是Spring Framework中的一个已知问题,已在Spring Framework 5.1.4中修复-参见SPR-17564.

不幸的是,我不知道有任何解决此问题的方法,因此到目前为止,升级到Spring Framework 5.1.4 / Spring Boot 2.1.2是唯一的解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读