我编写了Java代码来登录Salesforce并在防火墙服务器上运行此代码。为此,由于防火墙,我必须在连接到Salesforce之前指定代理URL和代理端口。但是,我收到代理URL的unknownhostexception错误。如果我尝试使用代理设置通过curl登录,我可以连接。那怎么连接使用Java呢?任何帮助表示赞赏。
答案 0 :(得分:1)
显然这个问题是由JVM配置引起的。我们必须配置JVM以使用代理设置,如下所示:
System.setProperty("http.proxyHost", crmProxyURL);
System.setProperty("http.proxyPort", crmProxyPort);
答案 1 :(得分:1)
根据您的HTTP库,系统设置可能不够或不需要。在Salesforce context中,很可能会尝试使用Jetty HTTP Client。在这种情况下,系统属性将被忽略,代理需要由Jetty客户端处理:
ProxyConfiguration proxyConfig = httpClient.getProxyConfiguration();
HttpProxy proxy = new HttpProxy("proxyHost", proxyPort);
proxyConfig.getProxies().add(proxy);
Apache HTTP Client,另一个受欢迎的选择,也使用自己的小机制:
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低级功能更容易。