2013-05-28 2 views
3

Я пытаюсь написать программу для отправки XML-запроса через HTTP на сервер поставщика, и я использовал код примера из this link.Got java.net.UnknownHostException, не может пинговать какой-либо сайт, но может нормально просматривать

Затем я получил ошибку java.net.UnknownHostException при запуске кода Затем я попытался выполнить команду ping поставщика, а затем www.google.com. Ни один из них не работает. Я получил:

"запрос пинг не смог найти хозяина www.google.com"

Я использую корпоративную сеть. Я могу просматривать и загружать и сообщать серверу поставщика с помощью своего веб-приложения. Любая идея, как это исправить?

+0

У вашей сети coroporate, вероятно, нет DNS для внешних доменов, и разрешение выполняется через прокси. Итак, для вас нет DNS! И вам нужно пройти через прокси-сервер, чтобы делать свой HTTP-материал. – fge

+0

Вы должны действительно взглянуть на Spring и JaxB, а затем упростить подход к демонстрации в этом учебнике. Google о SpringTemplate от Spring и о том, как настроить/unmarshall с помощью JaxB. – Dan

ответ

1

Необходимо проверить сетевые настройки вашей системы. Вам необходимо подтвердить, что вы установили DNS-сервер и шлюз по умолчанию.

Если, в общем, ваша сетевая конфигурация верна, вы можете попробовать использовать команду nslookup google.com 8.8.8.8. Это попытается разрешить ip google с одним из своих общедоступных DNS-серверов.

+0

Я получил запрос DNS, когда я попробовал nslookup. Я использовал автоматическое получение в настройках TCP/IP Wi-Fi. Не уверен, какой DNS я должен использовать, если мне нужно это изменить. – SeanYang15

+0

@ SeanYang15 см. Мой комментарий к вашему вопросу. В принципе, вы не можете выполнить ping и пройти через прокси. – fge

2

Вы можете без проблем просматривать сеть, потому что ваш браузер должен быть настроен на использование прокси. Мы можем настроить JVM на использование одного и того же прокси-сервера, а затем успешно открыть HTTP-соединения.

Откройте настройки сети вашего веб-браузера и запишите свой прокси-сервер и порт.

Для Firefox выберите Инструменты> Настройки> Дополнительно> Сеть> Соединение> Настройки

Теперь в вашей программе Java, прежде чем открыть соединение HTTP настраивал JVM использовать этот прокси-сервер.

System.getProperties().put("proxySet", "true"); 
System.getProperties().put("http.proxyHost", "10.1.0.11"); 
System.getProperties().put("http.proxyPort", "8080"); 

С указанными выше свойствами, ваша программа должна иметь возможность открывать соединения. Если ваш прокси-сервер нуждается в аутентификации, вам также нужно будет установить по умолчанию Authenticator с объектом ProxyAuth.

В идеале вы должны очистить эти свойства до выхода вашей программы.

+0

Ravi и @fge Вы правы. Браузер использует настройку прокси-сервера, выполненную на компьютере компании, и использует сценарий автоматической настройки. Есть ли способ, чтобы программа использовала обходку?Поскольку я вижу несколько хостов для разных ситуаций в скрипте, и я не уверен, какой из них я должен использовать здесь. – SeanYang15

+0

С другой стороны: поскольку первая часть прокси-скрипта имеет «if ((host ==« 127.0.0.1 ») || (host ==" localhost ")) { return" DIRECT ";" Я попытался выполнить ping 127.0.0.1, и я получил ответ. Но я добавил System.getProperties(). Put ("http.proxyHost", "127.0.0.1"); в моей программе, и это не решило проблему – SeanYang15

+0

127.0.0.1, а localhost - это петлевые адреса, то есть они указывают на вашу собственную машину. Таким образом, установка их в качестве прокси-хоста не поможет. Вы видите какой-либо другой хост или IP-адрес, настроенный в сценарии? –

0

Скорее всего, вы находитесь за брандмауэром.

Ваш брандмауэр не позволяет подключиться к Интернету с помощью инструментов для очистки веб-страниц, таких как Jsoup. Попробуйте подключиться к интрасети, если вы находитесь в корпоративной сети.

 Смежные вопросы

  • Нет связанных вопросов^_^