2017-04-19 61 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低級別功能更容易。

相關問題