diff --git a/resteasy-client-vertx/src/main/java/org/jboss/resteasy/client/jaxrs/engines/vertx/VertxClientHttpEngine.java b/resteasy-client-vertx/src/main/java/org/jboss/resteasy/client/jaxrs/engines/vertx/VertxClientHttpEngine.java index aa117b79489..70300c4bda3 100644 --- a/resteasy-client-vertx/src/main/java/org/jboss/resteasy/client/jaxrs/engines/vertx/VertxClientHttpEngine.java +++ b/resteasy-client-vertx/src/main/java/org/jboss/resteasy/client/jaxrs/engines/vertx/VertxClientHttpEngine.java @@ -149,7 +149,10 @@ private CompletableFuture submit(final ClientInvocation request) if (body != null) { headers.set(HttpHeaders.CONTENT_LENGTH, "" + body.length()); } - options.addHeader(HttpHeaders.USER_AGENT.toString(), "Vertx"); + + if (!headers.contains(HttpHeaders.USER_AGENT)) { + options.addHeader(HttpHeaders.USER_AGENT.toString(), "Vertx"); + } URI uri = request.getUri(); options.setHost(uri.getHost()); @@ -164,7 +167,11 @@ private CompletableFuture submit(final ClientInvocation request) options.setPort(uri.getPort()); } - options.setURI(uri.getRawPath()); + String relativeUri = uri.getRawPath(); + if (uri.getRawQuery() != null && !uri.getRawQuery().trim().isEmpty()) { + relativeUri = relativeUri + "?" + uri.getRawQuery(); + } + options.setURI(relativeUri); Object timeout = request.getConfiguration().getProperty(REQUEST_TIMEOUT_MS); if (timeout != null) { diff --git a/resteasy-client-vertx/src/test/java/org/jboss/resteasy/test/client/vertx/VertxClientEngineTest.java b/resteasy-client-vertx/src/test/java/org/jboss/resteasy/test/client/vertx/VertxClientEngineTest.java index 820d3f4f1e5..8fb77e7af26 100644 --- a/resteasy-client-vertx/src/test/java/org/jboss/resteasy/test/client/vertx/VertxClientEngineTest.java +++ b/resteasy-client-vertx/src/test/java/org/jboss/resteasy/test/client/vertx/VertxClientEngineTest.java @@ -114,6 +114,47 @@ public void testSimple() throws Exception { assertEquals("Success", response.readEntity(String.class)); } + @Test + public void testQueryParams() throws Exception { + final String queryParam = "testQueryParam"; + final String queryParamValue = "testQueryParamValue"; + server.requestHandler(req -> { + HttpServerResponse response = req.response(); + if (String.format("%s=%s", queryParam, queryParamValue).equals(req.query())) { + response.setStatusCode(200).end("Success"); + } else { + response.setStatusCode(503).end("fail"); + } + }); + + final Response response = client().target(baseUri()) + .queryParam(queryParam, queryParamValue) + .request() + .get(); + assertEquals(200, response.getStatus()); + assertEquals("Success", response.readEntity(String.class)); + } + + @Test + public void testSimpleCustomUserAgent() throws Exception { + final String customUserAgent = "CUSTOM_USER_AGENT"; + server.requestHandler(req -> { + HttpServerResponse response = req.response(); + if (req.getHeader(HttpHeaders.USER_AGENT).equals(customUserAgent)) { + response.setStatusCode(200).end("Success"); + } else { + response.setStatusCode(503).end("fail"); + } + }); + + final Response response = client().target(baseUri()).request() + .header(HttpHeaders.USER_AGENT.toString(), customUserAgent) + .get(); + + assertEquals(200, response.getStatus()); + assertEquals("Success", response.readEntity(String.class)); + } + @Test public void testHTTP() throws Exception { server.requestHandler(req -> {