Http Post для WebClient

Я пытаюсь протестировать свою конечную точку Post с помощью WebClient of Vertx и всегда получаю 500 в качестве кода состояния. Может ли кто-нибудь сообщить мне, что я здесь делаю не так:-

final String jsonBody = "{\"url\": \"https://www.google.se\"}";
    WebClient.create(vertx)
            .post(8080, "::1", "/service")
            .sendJson(
                jsonBody,
                response ->
                    testContext.verify(
                        () -> {
                          System.out.println(response.result().statusCode());
                          assertEquals("OK", response.result());
                        }));

2 ответа

Это должно сработать для вас. Я показываю и клиента, и обработчика. Клиент создаетJsonObjectиз строки. Обработчик находится на сервере.

@Test
public void testPostURL(TestContext context) {
    Async async = context.async();
    final String body = "{\"url\": \"https://www.google.se\"}";
    WebClient.create(vertx)
            .post(8080, "localhost", "/service")
            .putHeader("content-type", "application/json")
            .sendJson( new JsonObject(body),
                     requestResponse -> {
                        context.assertEquals(requestResponse.result().statusCode(), 200);
                        async.complete();
                    });
}

Обработчик ожидает JsonObject и возвращает URL-адрес ( https://www.google.se/)

    private void service(RoutingContext rc) {
    HttpServerResponse response = rc.response();
    JsonObject body = rc.getBodyAsJson();
    String site = body.getString("url");
    response.setStatusCode(200)
            .putHeader("content-type", "application/json; charset=utf-8")
            .end(Json.encodePrettily(site));
}

500 - это внутренняя ошибка сервера. В вашем случае он не получает необходимых данных.. Я думаю. Поэтому попробуйте отправить полезную нагрузку, используя

  • Преобразуйте строку в jsonobject и отправьте нам метод sendJsonObject
  • Преобразуйте буфер в jsonobject и отправьте метод usig sendBuffer
Другие вопросы по тегам