2011-01-05 11 views
21

Piszę kod, który łączy się z witrynami i sprawdza niektóre kodu, jak robota. Ale muszę połączyć się przez serwer proxy i zmienić adres IP (aby nie wyświetlał adresu IP klienta w dziennikach serwera).Jak korzystać z serwera proxy HTTP w java

Jak można tego dokonać za pomocą Java?

+23

hmm brzmi jak twoje do czegoś dobrego. – stevebot

Odpowiedz

43

Możesz użyć właściwości systemu java, aby skonfigurować proxy lub przekazać go jako opcje wiersza poleceń.

Możesz znaleźć szczegółowe informacje i próbki here.

Ex: Przed otwarciem połączenia

System.setProperty("http.proxyHost", "myProxyServer.com"); 
System.setProperty("http.proxyPort", "80"); 

Albo można użyć proxy domyślnej sieci skonfigurowane w sytem

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

Ponieważ Java 1.5 można utworzyć instancję serwera proxy i przekazać je do metoda openConnection().

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("123.0.0.1", 8080)); 
URL url = new URL("http://www.yahoo.com"); 
HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy); 
uc.connect(); 

Albo jak lisak zasugerował, można korzystać z niektórych 3rd bibliotek strona, która wspiera swoje potrzeby lepiej.

+1

Należy również pamiętać, że konfiguracja proxy dla HTTPS używa nieco innej właściwości, np. System.setProperty ("https.proxyHost", "myProxyServer.com") ;. Zastanawiałem się, dlaczego to nie działa na początku i to dlatego, że mój kod używa HTTPS. – talawahtech

+1

Dlaczego w ogóle nie ma stałej Proxy.Type.HTTPS (secure)? – Stefan

10

Możesz również użyć numeru HttpClient, który lepiej odpowiada Twoim potrzebom. Sprawdź dokumentację, jest ona krótka i zawiera wiele informacji.

DefaultHttpClient httpclient = new DefaultHttpClient(); 

HttpHost proxy = new HttpHost("someproxy", 8080); 
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 
+0

Tutorial tutaj: [link] (https://hc.apache.org/httpcomponents-client-4.3.x/tutorial/html/connmgmt.html#d5e475) –

Powiązane problemy