2017-04-19 98 views
1

我编写了Java代码以登录到Salesforce并在防火墙服务器上运行此代码。为此,由于防火墙的原因,我必须在连接到Salesforce之前指定代理网址和代理端口。但是,我收到代理网址的unknownhostexception错误。如果我尝试通过curl通过代理设置登录,我可以连接。那么怎么会有使用Java连接的问题呢?任何帮助表示赞赏。使用代理服务器无法使用Java登录到Salesforce

回答

1

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

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

根据您的HTTP库,系统设置可能不够或不需要。在Salesforce context很可能会尝试使用Jetty HTTP Client。在这种情况下,系统属性被忽略,并且代理需要由码头客户端来处理:

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低级别功能更容易。