2010-12-01 19 views
9

* rutinleri, ben bir proxy ayarlayabilirsiniz:org.apache.commons.httpclient kullanırken proxy'yi komut satırında ayarlayabilir miyim? . Böyle bir uygulama çağrılırken bir uygulama java.net kullanıyorsa

java -Dhttp.proxyHost=proxy.server.com -Dhttp.proxyPort=8000 <whatever-the-app-is> 

Ancak, (ı değiştiremezsiniz olan) bir uygulama var org kullanarak. http iletişimini yapmak için apache.commons.httpclient. Bir proxy sunucusu belirtmez, ancak varsayılan HttpConnection kullanır. Apache http istemcisini bir proxy sunucusu kullanmak için komut satırından anlatabileceğim bir yol var mı?

cevap

5

Maalesef, yapabileceğini sanmıyorum: Ama burada bir çalıştık gerektiğini Eski bir projede bu kodu buldum koddur. Tek yol, uygulamanın System özelliğini okuması ve ardından DefaultHttpParams nesnesinde ayarlamasını sağlamaktır.

Daha fazla bilgi için httpclient kullanıcı grubunda this thread'a bakın.

+0

Teşekkürler. Tek yol bu değil (proxy'leri başka şekillerde ayarlayabilirsin ama hepsini görebildiğim kadarıyla uygulamayı değiştirmeyi içeriyorsun) –

1

Sanırım öyle değil.

try { 
    String proxyHost = System.getProperty("https.proxyHost"); 
    int proxyPort = 0; 
    try { 
     proxyPort = Integer.parseInt(System.getProperty("https.proxyPort")); 
    } catch (Exception ex) { 
     System.out.println("No proxy port found"); 
    } 

    System.setProperty("java.net.useSystemProxies", "true"); 

    ProxySelector ps = ProxySelector.getDefault(); 
    List<Proxy> proxyList = ps.select(new URI(targetUrl)); 
    Proxy proxy = proxyList.get(0); 
    if (proxy != null) { 
     InetSocketAddress addr = ((InetSocketAddress) proxy.address()); 
     if (addr != null) { 
      proxyHost = addr.getHostName(); 
      proxyPort = addr.getPort(); 
     } 
    } 

    boolean useProxy = proxyHost != null && proxyHost.length() > 0; 

    if (useProxy) { 
     httpClient.getHostConfiguration().setProxy(proxyHost, proxyPort); 
    } 

} catch (Exception ex) { 
    ex.printStackTrace(); 
} 
+0

Teşekkürler. Maalesef, uygulamayı değiştiremiyorum (kolayca), ama belki de –

5

HTTPClient oluşturucuyu kullanırken, standart JVM -D proxy parametrelerini etkinleştirmek için useSystemProperties() yöntemini kullanın.

CloseableHttpClient httpclient = HttpClients.custom() 
    .useSystemProperties() 
    .build(); 

Şimdi vekil yapılandırmak için -Dhttp.proxyHost = 10.0.0.100 -Dhttp.proxyPort = 8800 kullanın:
http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html#useSystemProperties()

Örnek Bkz.

İlgili konular