无法使用代理服务器使用Java登录Salesforce

无法使用代理服务器使用Java登录Salesforce,java,salesforce,Java,Salesforce,我编写了Java代码来登录Salesforce,并在防火墙服务器上运行了这段代码。为此,由于防火墙的原因,我必须在连接到Salesforce之前指定代理url和代理端口。但是,我得到了代理url的unknownhostexception错误。如果我尝试使用代理设置通过curl登录,我就能够连接。为什么使用Java连接会出现问题?非常感谢您的帮助。显然,问题是由JVM配置引起的。我们必须将JVM配置为使用代理设置,如下所示: System.setProperty("http.proxyHost",

我编写了Java代码来登录Salesforce,并在防火墙服务器上运行了这段代码。为此,由于防火墙的原因,我必须在连接到Salesforce之前指定代理url和代理端口。但是,我得到了代理url的unknownhostexception错误。如果我尝试使用代理设置通过curl登录,我就能够连接。为什么使用Java连接会出现问题?非常感谢您的帮助。

显然,问题是由JVM配置引起的。我们必须将JVM配置为使用代理设置,如下所示:

System.setProperty("http.proxyHost", crmProxyURL);
System.setProperty("http.proxyPort", crmProxyPort);

根据您的HTTP库,系统设置可能不够或不需要。在这种情况下,很可能会尝试使用。在这种情况下,将忽略系统属性,Jetty客户端需要处理代理:

ProxyConfiguration proxyConfig = httpClient.getProxyConfiguration();
HttpProxy proxy = new HttpProxy("proxyHost", proxyPort);
proxyConfig.getProxies().add(proxy);
另一种流行的选择,也使用自己的小机制:

 HttpHost proxy = new HttpHost("proxyHost", proxyPort, "https");
 RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
 HttpGet request = new HttpGet(someURL);
 request.setConfig(config);
有趣的是:可以指定使用http或https作为代理协议

总的来说,我发现使用http客户机比使用JDK底层功能容易得多