diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ProxyConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ProxyConfig.java index 8374bb3a5..7a00a0764 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ProxyConfig.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ProxyConfig.java @@ -6,6 +6,7 @@ public class ProxyConfig { private String username; private String password; private ProxyAuthType proxyAuthType; + private String scheme; private Boolean useSystemProperties; // a list of hosts that should be reached directly, bypassing the proxy. // This is a list of patterns separated by '|'. The patterns may start or end with a '*' for @@ -70,6 +71,15 @@ public ProxyConfig setProxyAuthType(ProxyAuthType proxyAuthType) { return this; } + public String getScheme() { + return scheme; + } + + public ProxyConfig setScheme(String scheme) { + this.scheme = scheme; + return this; + } + public Boolean getUseSystemProperties() { return useSystemProperties; } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java index b02a38d39..ef1a1cb60 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java @@ -33,14 +33,15 @@ public static void setupProxy(ProxyConfig config, HttpClientBuilder builder) { Integer proxyPort = null; String proxyUser = null; String proxyPassword = null; + String proxyScheme = null; ProxyConfig.ProxyAuthType proxyAuthType = null; if (config.getUseSystemProperties() != null && config.getUseSystemProperties()) { builder.useSystemProperties(); - String protocol = System.getProperty("https.proxyHost") != null ? "https" : "http"; - proxyHost = System.getProperty(protocol + ".proxyHost"); - proxyPort = Integer.parseInt(System.getProperty(protocol + ".proxyPort")); - proxyUser = System.getProperty(protocol + ".proxyUser"); - proxyPassword = System.getProperty(protocol + ".proxyPassword"); + proxyScheme = System.getProperty("https.proxyHost") != null ? "https" : "http"; + proxyHost = System.getProperty(proxyScheme + ".proxyHost"); + proxyPort = Integer.parseInt(System.getProperty(proxyScheme + ".proxyPort")); + proxyUser = System.getProperty(proxyScheme + ".proxyUser"); + proxyPassword = System.getProperty(proxyScheme + ".proxyPassword"); proxyAuthType = config.getProxyAuthType(); } // Override system properties if proxy configuration is explicitly set @@ -50,7 +51,8 @@ public static void setupProxy(ProxyConfig config, HttpClientBuilder builder) { proxyUser = config.getUsername(); proxyPassword = config.getPassword(); proxyAuthType = config.getProxyAuthType(); - builder.setProxy(new HttpHost(proxyHost, proxyPort)); + proxyScheme = config.getScheme(); + builder.setProxy(new HttpHost(proxyHost, proxyPort, proxyScheme)); } if (proxyHost == null) { // No proxy is set in system properties or in the config @@ -58,7 +60,7 @@ public static void setupProxy(ProxyConfig config, HttpClientBuilder builder) { } if (config.getNonProxyHosts() != null) { builder.setRoutePlanner( - new CustomRoutePlanner(new HttpHost(proxyHost, proxyPort), config.getNonProxyHosts())); + new CustomRoutePlanner(new HttpHost(proxyHost, proxyPort, proxyScheme), config.getNonProxyHosts())); } setupProxyAuth(proxyHost, proxyPort, proxyAuthType, proxyUser, proxyPassword, builder); }