Я пытаюсь подключиться к AWS API-шлюзу с помощью веб-клиента Vertx:
HttpRequest<Buffer> request = webClient.postAbs(targetHost);
request.putHeader("Authorization", auth);
request.putHeader("Content-Type", contentType);
request.putHeader("Host", hostName);
request.sendJson(new JsonObject(jsonData), response -> {
if (response.succeeded()) {
final JsonObject result = response.result().bodyAsJsonObject();
logger.info(result.toString());
routingContext.response()
.setStatusCode(200)
.putHeader("Content-Type", "application/json")
.end(result.toString());
} else {
logger.error(response.cause().getMessage());
routingContext.fail(new Exception(response.cause().getMessage()));
}
});
и всегда получаю один и тот же ответ об ошибке, т.е. рассчитанная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте свой AWS Секретный ключ доступа и метод подписи.
Но если я использую javax.ws.rs.client.WebTarget,
Client client = ClientBuilder.newClient();
WebTarget target = client.target(targetHost);
response=target.request()
.header("Authorization", auth)
.header("Content-Type", contentType)
.header("Host", hostName)
.post(jsonData,Response.class);
Я смогу получить правильный ответ .
Есть идеи, как веб-клиент Vertx работает по-другому?