diff --git a/ksqldb-rest-client/src/main/java/io/confluent/ksql/rest/client/KsqlRestClient.java b/ksqldb-rest-client/src/main/java/io/confluent/ksql/rest/client/KsqlRestClient.java index 77a0aaad5c9d..38239631f167 100644 --- a/ksqldb-rest-client/src/main/java/io/confluent/ksql/rest/client/KsqlRestClient.java +++ b/ksqldb-rest-client/src/main/java/io/confluent/ksql/rest/client/KsqlRestClient.java @@ -239,7 +239,11 @@ private static List parseServerAddresses(final String serverAddresses) { private static URI parseUri(final String serverAddress) { try { - return new URL(serverAddress).toURI(); + final URL url = new URL(serverAddress); + if (url.getPort() == -1) { + return new URL(serverAddress.concat(":") + url.getDefaultPort()).toURI(); + } + return url.toURI(); } catch (final Exception e) { throw new KsqlRestClientException( "The supplied serverAddress is invalid: " + serverAddress, e); diff --git a/ksqldb-rest-client/src/test/java/io/confluent/ksql/rest/client/KsqlRestClientTest.java b/ksqldb-rest-client/src/test/java/io/confluent/ksql/rest/client/KsqlRestClientTest.java index d45817675c9b..350b3124c6f0 100644 --- a/ksqldb-rest-client/src/test/java/io/confluent/ksql/rest/client/KsqlRestClientTest.java +++ b/ksqldb-rest-client/src/test/java/io/confluent/ksql/rest/client/KsqlRestClientTest.java @@ -115,6 +115,32 @@ public void shouldParseHttpsAddress() throws Exception { assertThat(ksqlRestClient.getServerAddress(), is(serverURI)); } + @Test + public void shouldParseHttpAddressWithoutPort() throws Exception { + // Given: + final String serverAddress = "http://singleServer"; + final URI serverURI = new URI(serverAddress.concat(":80")); + + // When: + KsqlRestClient ksqlRestClient = clientWithServerAddresses(serverAddress); + + // Then: + assertThat(ksqlRestClient.getServerAddress(), is(serverURI)); + } + + @Test + public void shouldParseHttpsAddressWithoutPort() throws Exception { + // Given: + final String serverAddress = "https://singleServer"; + final URI serverURI = new URI(serverAddress.concat(":443")); + + // When: + KsqlRestClient ksqlRestClient = clientWithServerAddresses(serverAddress); + + // Then: + assertThat(ksqlRestClient.getServerAddress(), is(serverURI)); + } + private KsqlRestClient clientWithServerAddresses(final String serverAddresses) { return KsqlRestClient.create( serverAddresses,