Unresolved Host Exception Android

Я пытаюсь вызвать веб-службу RESTful из приложения Android, используя следующий метод:

HttpHost target = new HttpHost("http://" + ServiceWrapper.SERVER_HOST,ServiceWrapper.SERVER_PORT); HttpGet get = new HttpGet("/list"); String result = null; HttpEntity entity = null; HttpClient client = new DefaultHttpClient(); try { HttpResponse response = client.execute(target, get); entity = response.getEntity(); result = EntityUtils.toString(entity); } catch (Exception e) { e.printStackTrace(); } finally { if (entity!=null) try { entity.consumeContent(); } catch (IOException e) {} } return result; 

Я могу просматривать адреса и просматривать результаты xml с помощью браузера Android Emulator и с моей машины. Я предоставил моему приложению разрешение ИНТЕРНЕТ.

Я развиваюсь с затмением.

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

Есть идеи?

Solutions Collecting From Web of "Unresolved Host Exception Android"

Я думаю, проблема может быть в первой строке:

 new HttpHost("http://" + ServiceWrapper.SERVER_HOST,ServiceWrapper.SERVER_PORT); 

Конструктор HttpHost ожидает, что имя хоста будет первым аргументом, а не именем хоста с префиксом "http://" .

Попробуйте удалить "http://" и он должен работать:

 new HttpHost(ServiceWrapper.SERVER_HOST,ServiceWrapper.SERVER_PORT); 

Ошибка означает, что URL-адрес не может быть разрешен через DNS. Есть много проблем, которые могут вызвать это. Если вы сидите за прокси-сервером, вы должны настроить его для использования.

 HttpHost proxy = new HttpHost(”proxy”,port,”protocol”); client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 

Также проверьте, что ваш интернет-перевод выглядит так

 <uses-permission android:name=”android.permission.INTERNET”></uses-permission> 

Как иногда это не будет работать как пустой тег.

Также ознакомьтесь с разделом « Сеть эмуляторов» и раздел «Ограничения»

Я бы дважды уточнил, что сетевое разрешение установлено правильно. Попробуйте что-то общее, как

 String address -"http://www.google.com"; URL url = new URL(address); InputStream in = url.openStream(); 

Чтобы убедиться, что ваши права установлены правильно.

После этого используйте свой любимый анализатор протоколов (я – вентилятор wirehark), чтобы понять, отправляете ли вы правильные пакеты. Я считаю, что вам нужно передать полный URL-адрес в HTTPGet, но я уверен примерно в 80%.

Измените первую строку в коде:

 HttpHost(ServiceWrapper.SERVER_HOST,ServiceWrapper.SERVER_PORT);