Я использую весеннюю загрузочную версию - 2.0.6.RELEASE и весеннюю облачную версию - Finchley.SR2
и я создал собственный фильтр шлюза, чтобы изменить тело запроса.
но при преобразовании тела запроса в строку с помощью Flux я получаю пустую строку. Мне нужен метод для получения строки, соответствующей моему телу запроса.
@Override
public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = (ServerHttpRequest) exchange.getRequest();
String s = resolveBodyFromRequest(request);
/* s comes out to be "" */
return chain.filter(newExchange);
}
private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest){
//Get the request body
Flux<DataBuffer> body = serverHttpRequest.getBody();
StringBuilder sb = new StringBuilder();
body.subscribe(buffer -> {
byte[] bytes = new byte[buffer.readableByteCount()];
buffer.read(bytes);
DataBufferUtils.release(buffer);
String bodyString = new String(bytes, StandardCharsets.UTF_8);
sb.append(bodyString);
});
return sb.toString();
}