Подготовили код:
Я вызываю службу, которая действительно работает, когда я тестирую ее с помощью Post Man (ContantType = "application / xml" там .. POST.
Но:
-
val webClient = WebClient.builder()
.baseUrl("https://mydomain/web/services/validation")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE)
.build();
final WebClient.RequestBodyUriSpec requestBodyUriSpec = webClient.post();
MyResponseData myResponseData = requestBodyUriSpec
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE)
.accept(MediaType.APPLICATION_XML)
.acceptCharset(Charset.forName("UTF-8"))
.retrieve()
.bodyToMono(MyResponseData.class)
.block();
-
в результате я всегда получаю
Exception in thread "main" org.springframework.web.reactive.function.client.WebClientResponseException$BadRequest: 400 Bad Request
в логах ни разу не получится myResponseData
// Я использую аннотации jaxb и Jackson, просто чтобы показать, что я тоже это пробовал.
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlRootElement(name = "MyResult")
@JacksonXmlRootElement(localName = "MyResult")
@AllArgsConstructor // TODO:
@Data
@Builder
public class MyResponseData {
public MyResponseData() {}
@XmlElement(name = "Members")
@JacksonXmlProperty(localName = "Members")
private List<Member> memberData;
}
Любая идея?
MyResponseData сопоставляется с XML. Мне все еще не удается увидеть ответ в журнале. Это другой вопрос.
Ответ XML выглядит следующим образом:
<MyResult>
<Members>...</Members>
</MyResult>
Понятия не имею, что не так. И, кажется, это "популярный" безответный вопрос по SO.
<MyResult> <Members>...</Members> </MyResult>
Обновление через некоторое время: я видел разные типы проблем с реактивным веб-клиентом, "разрыв соединения" / netty. Относится к конфигурации сети. Пока не смог использовать этот клиент для прод.




Если вы перейдете к mydomain / web / services / проверка через Postman (или скрутите его), что вы получите обратно?