外部APIとの通信に私のプロジェクトでSpring webfluxを使用しています。私のプロジェクトでは、FluxをListに変換できません。
collectList()。block()で同じことを行おうとすると、フラックスのすべての要素が1つの文字列に連結され、リストの0番目のインデックスに格納されます。ListではなくFluxを返すと、期待される応答が送信されます。しかし、私はコンテンツを操作し、それを他のオブジェクトの子として追加する必要があるため、リストを返そうとします。
public List<String> retrieveWebLogin(String platformId) {
try {
ClientResponse response = webClient
.get()
.uri(EV_LEGACY_WEB_RTC_ENDPOINT_API_PATH)
.accept(APPLICATION_JSON)
.exchange().block();
Flux<String> uriFlux = response.bodyToFlux(String.class);
List<String> uriList = uriFlux.collectList().block();
return uriList;
} catch (Exception e) {
logger.info(e.getMessage(), e);
}
return null;
}
期待される結果:["agent1"、 "agent2"]
実際の結果: "[" agent1 "、" agent2 "]"
代わりに、コードは次のようになります。
final List<String> uriList = webClient
.get()
.uri(EV_LEGACY_WEB_RTC_ENDPOINT_API_PATH)
.accept(MediaType.APPLICATION_JSON_UTF8)
.exchange()
.flatMap(response -> response.bodyToMono(new ParameterizedTypeReference<List<String>>() {}))
.block();
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加