Почему 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();
}

0 ответов

Другие вопросы по тегам