Android: UnknownHostException - PullRequest
       12

Android: UnknownHostException

68 голосов
/ 23 июля 2010

Я использую Android SDK 2.2, тестирую свое приложение с помощью эмулятора. Я хочу отправить сообщение HTTP. Когда я это делаю, я получаю UnknownHostException. Я разместил необходимые разрешения
<uses-permission android:name="android.permission.INTERNET" />
в файле manifest.xml. Также я могу открыть браузер на эмуляторе и без проблем перейти по URL.

Вот мой код:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost( uri );
HttpResponse response = null;
try
{
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
2 );
nameValuePairs.add( new BasicNameValuePair( "id", "edit-name" ) );
nameValuePairs
.add( new BasicNameValuePair( "stringdata", userName ) );
httppost.setEntity( new UrlEncodedFormEntity( nameValuePairs ) );

// Execute HTTP Post Request
response = httpclient.execute( httppost );
// Log.i( "HttpManager:", "======> response: "
// + response.getEntity().getContent() );

}
catch (ClientProtocolException e)
{
Log.e( "HttpManager", "ClientProtocolException thrown" + e );
}
catch (IOException e)
{
Log.e( "HttpManager", "IOException thrown" + e );
}

Ответы [ 14 ]

116 голосов
/ 30 июля 2010

Хорошо, я чувствую себя довольно неуклюжим ... Тег разрешений ИНТЕРНЕТА является потомком тега манифеста, а не тега приложения. Sheesh!

51 голосов
/ 22 февраля 2011

Для других, я столкнулся с этой проблемой, и Google высадил меня.Как уже упоминалось в anisbet, я дважды проверил свой тег разрешения, и он оказался в нужном месте.

В конце концов я запустил Android-браузер и получил такой же ответ от моего веб-сервера, а также от Google.com (хотя сам компьютер был в порядке).Я прекратил эмулятор Android и перезапустил;работал с первой попытки.

После просмотра вашего кода, возможно, стоит перезапустить эмулятор.Честно говоря, эмулятор сбил несколько программ вскоре после этого, так что, возможно, что-то еще происходило на моем компьютере.Тем не менее, это потратило кучу времени для меня, так что, возможно, это спасет кого-то от головной боли, хотя я и пошел.

Удачи!

33 голосов
/ 02 ноября 2012

Убедитесь, что у вас есть подключение к интернету. Вот что случилось со мной, когда я забыл, что я тестирую мобильный телефон без подключения к интернету.

17 голосов
/ 17 января 2012

Вы знаете, что для меня это решило, поместив разрешение непосредственно перед закрывающим тегом манифеста, например:

<uses-permission android:name="android.permission.INTERNET" />
</manifest>
8 голосов
/ 28 марта 2013

Иногда это происходит, когда вы запускаете приложение в эмуляторе. Просто перезапустите эмулятор, чтобы решить проблему. У меня это сработало!

5 голосов
/ 09 февраля 2012

Если ничего из вышеперечисленного не сработало, попробуйте сделать шаг назад и убедиться, что ваше устройство или эмулятор действительно могут выйти в Интернет, открыв браузер.

2 голосов
/ 11 декабря 2014

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

2 голосов
/ 17 июня 2011

Я столкнулся с той же проблемой.У меня есть правильные разрешения в моем файле Android Manifest, и URL тоже правильный.Я получаю ответ в веб-браузере.Я перезапустил IDE, эмулятор, но не решил проблему.Поэтому я удалил AVD с помощью диспетчера AVD, а затем запустил эмулятор, и он начал работать.

2 голосов
/ 09 февраля 2011

Я столкнулся с подобной проблемой при тестировании приложения с minSdkVersion, установленным в 4, и пытался запустить его на G1.Изменение на 3 решило проблему для меня.

1 голос
/ 14 мая 2012

Еще одна вещь: оказалось, что сам интернет не работает для меня.Запуск эмулятора из командной строки с этими переключателями исправил это для меня: emulator -avd your_avd_name -dns-server 8.8.8.8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...