как ваше первоначальное значение вместо.
ользуюWebClient
и обычайBodyExtractor
класс для моего приложения весенней загрузки
WebClient webLCient = WebClient.create();
webClient.get()
.uri(url, params)
.accept(MediaType.APPLICATION.XML)
.exchange()
.flatMap(response -> {
return response.body(new BodyExtractor());
})
BodyExtractor.java
@Override
public Mono<T> extract(ClientHttpResponse response, BodyExtractor.Context context) {
Flux<DataBuffer> body = response.getBody();
body.map(dataBuffer -> {
try {
JaxBContext jc = JaxBContext.newInstance(SomeClass.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
return (T) unmarshaller.unmarshal(dataBuffer.asInputStream())
} catch(Exception e){
return null;
}
}).next();
}
Вышеупомянутый код работает с небольшой полезной нагрузкой, но не с большой полезной нагрузкой, я думаю, это потому, что я читаю только одно значение потока сnext
и я не уверен, как объединить и прочитать всеdataBuffer
.
Я новичок в реакторе, поэтому я не знаю много трюков с флюсом / моно.