Почему WebClient из Vert.x всегда получает тайм-аут при публикации на imgix.com?
Как говорится в документе Imgix, очистить кеш изображений отimgix
через отправку URL-адреса кеша на него, но в моих попытках он всегда получал тайм-аут подключения к imgix
host, то я попытался переписать с 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();
}