Я пытаюсь использовать WebClient для выполнения массивного запроса POST Http.
Я установил уровень ведения журнала на reactor.ipc.netty
для DEBUG, чтобы увидеть отправку запроса.
Вот действующий код:
@Service
public class HttpService implements IHttpService {
private static final String URL = "http://blablabla.com/bla";
private static final Logger logger = LogManager.getLogger();
@Autowired
WebClient webClient;
@Override
public void push(Data data) {
String body = constructString(data);
Mono<ClientResponse> res = webClient.post()
.uri(URL + getLogType(data))
.contentLength(body.length())
.contentType(MediaType.APPLICATION_JSON)
.syncBody(body)
.exchange();
ClientResponse resp = res.block();
logger.debug("Status : " + resp.statusCode());
logger.debug("Body : " + resp.bodyToMono(String.class));
}
}
Выдает такой журнал:
2018-05-16 15:54:14.642 DEBUG 19144 --- [ctor-http-nio-4] r.i.n.channel.ChannelOperationsHandler : [id: 0x439f7819, L:/127.0.0.1:56556 - R:blablabla.com/127.0.0.1:8069] Writing object DefaultHttpRequest(decodeResult: success, version: HTTP/1.1)
POST /bla HTTP/1.1
user-agent: ReactorNetty/0.7.7.RELEASE
host: blablabla.com/bla:8069
accept: */*
accept-encoding: gzip
Content-Length: 494
Content-Type: application/json
Но когда я удаляю ClientResponse resp = res.block();
, я больше не вижу журнал ... Так что я даже не знаю, обработан запрос или нет.
Как я могу обработать ответ, как только я его получу?
Я пытался с res.doOnSuccess(clientResponse -> logger.debug("Code : " + clientResponse.statusCode()));
, но безуспешно ...