Как говорится в документе Imgix , легко очистить кэш изображений из imgix
, разместив в нем URL-адрес кэша, но в моих попытках у него всегда было время ожидания подключения к imgix
хосту. , затем я попытался переписать с Java 11
HttpClient
, который работал хорошо. Я много раз использовал WebClient
, который всегда работал как положено, но в этой ситуации я не могу понять проблему, кто-нибудь может помочь? Спасибо!
private Future<Void> purgeCacheOfImgix(String entityId) {
Promise<Void> promise = Promise.promise();
String imgixApiKey = "";
String endpoint = "https://api.imgix.com/v2/image/purger";
String url = String.format("http://example.imgix.net/avatars/%s.png", entityId);
// WebClient doesn't work, why?
WebClient client = WebClient.create(vertx);
JsonObject data = new JsonObject()
.put("url", url);
client.postAbs(endpoint)
.basicAuthentication(imgixApiKey, "")
.as(BodyCodec.string())
.putHeader("Content-Type", "application/json")
.sendJson(data.toString(), ar -> {
if (ar.succeeded()) {
if (ar.result().statusCode() == 200) {
promise.complete();
} else {
logger.error("Failed to purge image cache at imgix, url({}), http status code: {}!", url, ar.result().statusCode());
promise.fail(new InternalServerErrorException("Failed to purge image cache!"));
}
} else {
logger.error("Failed to purge image cache at imgix, url({}), error: {}!", url, ar.cause().getMessage());
promise.fail(new InternalServerErrorException("Failed to purge image cache!"));
}
});
return promise.future();
}