对于最新版本的spring-webflux 5.1.3.RELEASE,我需要WebFlux客户端实现的帮助。
public RestClient(String gatewayUrl, String token, String username, String password, SslContext sslContext) {
this.token = token;
WebClient.Builder builder = WebClient.builder().baseUrl(gatewayUrl);
if (sslContext != null) {
ClientHttpConnector httpConnector = new ReactorClientHttpConnector(opt -> opt.sslContext(sslContext));
builder.clientConnector(httpConnector);
}
if (username != null && password != null) {
builder.filter(basicAuthentication(username, password));
}
client = builder.build();
}
public Mono<Response> execute(Transaction transaction) {
Mono<Transaction> transactionMono = Mono.just(transaction);
return client.post().uri("/v1/{token}", token)
.header(HttpHeaders.USER_AGENT, "client")
.accept(MediaType.APPLICATION_XML)
.contentType(MediaType.APPLICATION_XML)
.body(transactionMono, Transaction.class)
.retrieve()
.bodyToMono(Response.class);
}
我在此行
The constructor ReactorClientHttpConnector((<no type> opt) -> {}) is undefined
出现错误ClientHttpConnector httpConnector = new ReactorClientHttpConnector(opt -> opt.sslContext(sslContext));
您知道如何解决此问题吗?
最佳答案
从doc,您需要提供一个预定义的reactor.netty.http.client.HttpClient
来构造ReactorClientHttpConnector
。
例如:
HttpClient httpClient = HttpClient.create().secure(sslContextSpec -> sslContextSpec.sslContext(sslContext));
ClientHttpConnector httpConnector = new ReactorClientHttpConnector(httpClient);