Почему WebClient из Vert.x всегда получает время ожидания при публикации на imgix.com? - PullRequest
0 голосов
/ 21 февраля 2020

Как говорится в документе 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();
}
...