В запросе на отдых я отправляю другой запрос в веб-службу с помощью Spring WebClient и хочу вернуть результат вызывающей стороне:
return webClient.post()
.uri(url)
.body(...)
.retrieve()
.bodyToMono(String::class.java)
.map { ResponseEntity.ok(it) }
Теперь, когда веб-служба возвращает код состояния ошибки HTTP, я получаю следующую ошибку:
java.lang.IllegalStateException: Only one connection receive subscriber allowed.
Когда возвращается код состояния 200, ошибка не выдается.
Я также пытался проверить статус и сам создать исключение, но поведение остается прежним:
return webClient.post()
.uri(url)
.body(...)
.retrieve()
.onStatus(HttpStatus::isError) { clientResonse ->
clientResonse.bodyToMono(String::class.java)
.map { RuntimeException(it) }
}
.bodyToMono(String::class.java)
.map { ResponseEntity.ok(it) }
Что я делаю не так?
Примеры кода находятся в Kotlin, но я предполагаю, что каждый Java-разработчик может их прочитать :)