В рамках запроса на отдых я отправляю другой запрос в веб-сервис с помощью Spring WebClient и хочу вернуть результат вызывающей стороне:
return webClient.post()
.uri(url)
.body(...)
.retrieve()
.bodyToMono(String::class.java)
.map { ResponseEntity.ok(it) }
Теперь, когда webservice возвращает код состояния ошибки 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-разработчик может их прочитать:)