Próbuję rozwiązać nazwę hosta na odpowiadający jej adres IP.InetAddress.getByName nie powiedzie się za serwerem proxy
Moje środowisko to komputer typu mac w sieci firmowej za serwerem proxy, który jest skonfigurowany za pomocą pliku .pac za pośrednictwem preferencji systemowych (automatyczna konfiguracja serwera proxy). Jak dotąd wszystko działa dobrze i mogę uzyskać dostęp do zasobów wewnątrz i na zewnątrz mojej sieci firmowej.
Rozwiązywanie komputerów znajdujących się w mojej sieci działa perfekcyjnie: InetAddress.getByName("host.local");
Ale kiedy używać nazw hostów zewnętrznych, otrzymuję UnknownHostException: InetAddress.getByName("google.com");
produkuje
Exception in thread "main" java.net.UnknownHostException: google.com
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850)
at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201)
at java.net.InetAddress.getAllByName0(InetAddress.java:1154)
at java.net.InetAddress.getAllByName(InetAddress.java:1084)
at java.net.InetAddress.getAllByName(InetAddress.java:1020)
at java.net.InetAddress.getByName(InetAddress.java:970)
at Test.main(Test.java:67)
(jestem trochę zaskoczony tutaj Inet6AddressImpl
)
O ile rozumiem, InetAddress.getByName używa mechanizmów macierzystych do rozpoznawania nazw hostów. Tak więc nie sądzę, że błąd jest spowodowany brakującą konfiguracją proxy w java jvm.
Ale co jeszcze może być, jeśli wszystko inne działa dobrze?
Niektórzy (być może) użyteczna informacja dodatkowa:
używam MacBooka,
ifconfig
pokazuje interfejsy lo0, gif0, stf0, en0, fw0, EN1 -> podłączony do sieci z IPv4 adres.nslookup google.com
na konsoli zwraca** server can't find google.com: NXDOMAIN
tego samego kodu na komputerze z systemem Windows w sieci wyprodukował sam wyjątek
Wszelkie pomysły na temat przyczyny tego błędu? Czy istnieją inne sposoby na rozwiązywanie nazw hostów w java?
Dzięki za odpowiedź Alexander. Nie jestem ekspertem od sieci, ale czy to nie znaczy, że nie mogę uzyskać dostępu do witryny google.com (i oczywiście tej witryny;) z poziomu sieci firmowej? Wiem, że plik pac definiuje reguły, kiedy należy korzystać z serwera proxy, a kiedy nie. Może problem związany z "wykonaniem" pac na żądanie od jvm? – Benjamin
Alexander jest poprawny. Twój ruch trafia do Google, wysyłając go do serwera proxy, który sprawdza DNS przed wysłaniem ruchu na serwer Google. – EricLaw
@Benjamin. Jeśli możesz przejść do strony "google.com" za pomocą przeglądarki firmowej, być może musisz skonfigurować proxy dla swojego programu java. Aby uzyskać pomoc, przeczytaj ten artykuł: http://download.oracle.com/javase/6/docs/technotes/guides/net/proxies.html –