【发布时间】:2021-07-04 06:04:17
【问题描述】:
在我的 spring boot 2.4.1 应用程序中,我使用 WebClient 来调用一些外部休息服务。
在常规情况下,它非常简单,并且可以正常工作:
InquiryChequeResponse response=webClient.post()
.uri(inquiryChequeUrl)
.body(Mono.just(requestDto), InquiryChequeReq.class)
.exchangeToMono(res -> {
return res.bodyToMono(InquiryChequeResponse.class);
}).block();
但我需要从响应标头中获取一些值,例如“requestTraceId”并更新最终响应。
我试过这样:
InquiryChequeResponse response=webClient.post()
.uri(inquiryChequeUrl)
.body(Mono.just(requestDto), InquiryChequeReq.class)
.exchangeToMono(res -> {
String requestTraceId= res.headers().asHttpHeaders().getFirst("requestTraceId");
Mono<InquiryChequeResponse> inquiryCheque= res.bodyToMono(InquiryChequeResponse.class);
inquiryCheque.block().setRequestTraceId(requestTraceId);
return inquiryCheque;
}).block();
但我得到以下异常:
block()/blockFirst()/blockLast() are blocking, whichis not supported in thread reactor-http-nio-2
我的问题是出了什么问题,如何获得一些特定的请求标头并将其包含在我的最终响应中?
【问题讨论】:
-
如果您提供MVCE,会更容易为您提供帮助。我设法弄清楚您使用哪些技术并为您提供帮助,但如果您下次这样做,您会更加关注您的问题:)
标签: java spring-boot spring-webflux spring-webclient