Использование веб-клиента Vert.x для правильной отправки запросов GET с заголовками
У меня есть внутренняя конечная точка, которую я пытаюсь отправить GET
запросы к веб-клиенту Vert.x с Java. Пока я не могу успешно получить какие-либо данные обратно.
Если я отбраковываю конечную точку, она работает нормально (это внутренние конечные точки). Служба, которую я пытаюсь отправить GET
Для запросов требуется несколько заголовков, а также данные:
curl -H "Accept:application/json" -H "Content-Type:application/json" -H "alpha:192.168.10.20" -d '{"mutate":"*"}' http://my-endpoint.com/api/get-items
Но если я пытаюсь использовать это в одной из моих конечных точек маршрутизатора в Vert.x, я получаю сообщение об ошибке:
WebClient webClient = WebClient.create(vertx);
webClient.get("http://my-endpoint.com/api/get-items")
.putHeader("Accept", "application/json")
.putHeader("Content-Type", "application/json")
.putHeader("alpha", "192.168.10.20")
.sendJsonObject(new JsonObject().put("mutate", "*"), ar -> {
if (ar.succeeded()) {
System.out.println("##### WEBCLIENT #####");
System.out.println(ar);
} else {
System.out.println("CAUSE: " + ar.cause().getMessage());
}
});
Сообщение об ошибке, которое я получаю из оператора else:
CAUSE: Connection refused: localhost/127.0.0.1:80
Что я делаю неправильно? Я использовал это для справки: веб-клиент Vert.x
===========================================
РЕШЕНИЕ
===========================================
Я должен был изменить
webClient.get("http://my-endpoint.com/api/get-items")
в
webClient.post(80, "my-endpoint.com", "/api/get-items")
Также пришлось добавить .as(BodyCodec.jsonArray())
под линией выше, потому что результат, который я получил, был массивом Json.
2 ответа
Вы можете использовать метод getAbs, если не хотите самостоятельно анализировать URL-адрес.
webClient.getAbs("http://my-endpoint.com/api/get-items")
Это также относится к любому методу запроса,postAbs
,putAbs
, и т. д.
Вам нужно изменить
webClient.get("http://my-endpoint.com/api/get-items")
к
webClient.get(80, "my-endpoint.com", "/api/get-items")