在gateway的过滤器中根据配置走两套路由,路由转发之后,在对接口请求的内容进行处理时,发现无法获取接口返回值,要么出现多个请求,要么就是能获取接口成功时候的返回值无法获取失败的时候的返回值
解决方案:解析 ServerHttpRequest 数据流,将数据写入到 byte [] 数组中,在转换成 String 后就可以正常输出
Mono<DataBuffer> stringMono = webClientBuilder.build(). post().uri("xxxx") .retrieve().bodyToMono(DataBuffer.class) .doOnError(WebClientResponseException.class, err->{ String errMsg = err.getResponseBodyAsString(StandardCharsets.UTF_8);
throw new runtimeException(errMsg);
});
return exchange.getResponse().writeWith(stringMono);