java.net.ConnectException: localhost / 127.0.0.1: 8080 - В соединении отказано

97

Я использую сервер xampp apache для обслуживания ресурсов приложения с моей машины. Но я получаю указанную выше ошибку.

Я кое-что нашел в гугле. указывая на возможное решение здесь http://groups.google.com/group/android-beginners/browse_thread/thread/599a06416fb37b4a

Какое решение вышеуказанной проблемы?

прадип
источник
1
Используйте петлю 10.0.2.2 для вашего локального хоста (127.0.0.1). Подробнее об этом можно прочитать здесь. Сеть эмулятора Android
Дмитрий Мельничук

Ответы:

292

Поскольку вы не указали, что подключены к серверу с устройства или эмулятора, я предполагаю, что вы используете свое приложение в эмуляторе.

Если вы ссылаетесь на свой локальный хост в своей системе из эмулятора Android, вам необходимо использовать, http://10.0.2.2:8080/потому что эмулятор Android работает на виртуальной машине, поэтому здесь 127.0.0.1или localhostбудет собственный адрес обратной петли эмулятора.

См .: Сеть эмулятора

Викас Патидар
источник
Да, именно так и делаю. Вы можете подробно объяснить. Где поменять ip адрес на 10.0.2.2. Это папка, к которой я пытаюсь получить доступ с сервера xampp localhost: 8080 / aero
pradeep
1
Я понял, мы должны изменить путь, указанный в приложении, например http: // localhost: 8080 / link / to / resource.xml, на http://10.0.2.2:8080/link/to/resource.xml
pradeep
@VikasPatidar, пожалуйста, скажите мне, где изменить этот адрес на 10.0.2.2 в моем коде, поскольку я новичок
AndroidOptimist
1
например, если ваш URL-адрес похож, http://localhost:8080/Getdata.phpили http://127.0.0.1:8080/Getdata.phpвы должны изменить его для использованияhttp://10.0.2.2:8080/Getdata.php
Викас Патидар
1
Замените 10.0.2.2на, 10.0.3.2если вы используете Genymotion.
Jacob R
25

в android

Заменить: String webServiceUrl = "http://localhost:8080/Service1.asmx"

С участием : String webServiceUrl = "http://10.0.2.2:8080/Service1.asmx"

Удачи!

Фуоклуонг
источник
1
где в каком файле?
user3475052
19

localhost и 127.0.0.1 - оба способа сказать «текущий компьютер». Итак, localhost на вашем компьютере - это компьютер, а localhost на Android - это телефон. Поскольку на вашем телефоне нет веб-сервера, он, конечно, откажется от соединения.

Вам нужно получить IP-адрес вашего компьютера (используйте ipconfig в Windows, чтобы узнать) и используйте его вместо 127.0.0.1. Это может по-прежнему не работать в зависимости от того, как настроена ваша сеть / брандмауэры. Но это совсем другая тема.

скорулис
источник
Можете ли вы объяснить это более подробно, действительно ли нужно передавать IP-адрес моей машины
pradeep
2
Если вы наберете ipconfig, он сообщит вам IP-адрес вашей машины. Скорее всего, это частный IP-адрес вашей сети, поэтому он будет доступен только с устройств, находящихся в той же сети, поэтому Wi-Fi, вероятно, будет работать, а 3G - нет.
skorulis
@skorulis да, нам нужно установить URL-адрес нашей машины, отличный от 127.0.0.1, потому что мы подключены к сетям в нашем коде приложения.
Рави Ядав
Вы также можете установить конкретный IP-адрес для своего компьютера, на котором работает сервер. Используйте этот IP-адрес в своем приложении для Android. Это лучше, потому что в случае перезагрузки маршрутизатора или компьютера вы часто получаете новый IP-адрес для компьютера, и вам придется изменить его в своем коде.
DOUBL3P
12
  1. Добавить разрешение на доступ к Интернету в файле Androidmanifest.xml

использует-разрешение android: name = "android.permission.INTERNET

  1. Открыть cmd в windows
  2. введите "ipconfig", затем нажмите ввод
  3. найти IPv4-адрес. . . . . . . . . . . : 192.168.XX
  4. используйте этот URL-адрес " http: //192.168.XX: your_virtual_server_port / your_service.php "
Омид Ростами
источник
Спасибо, это работает для эмулятора NOX и Xammp.
Мисам Мехманнаваз,
9

Вам просто нужно использовать свой локальный (но реальный) IP-адрес и номер порта следующим образом:

String webServiceUrl = "http://192.168.X.X:your_virtual_server_port/your_service.php"

И убедитесь, что вы установили разрешение в Интернете в манифесте

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

Мистер Маустард
источник
5

Если вы используете localhost в своем URL-адресе и тестируете свое приложение в эмуляторе, вы можете просто заменить системный IP-адрес на localhost в URL-адресе. Или вы можете использовать 10.0.2.2 вместо localhost.

http: //localhost/webservice.php до http://10.218.28.19/webservice.php

Где 10.218.28.19 -> IP-адрес системы.

или

http: //localhost/webservice.php на http://10.0.2.2/webservice.php

БАБУ К
источник
4

Вам просто нужно использовать свой локальный IP-адрес: используя команду cmd "ipconfig" и номер порта вашего сервера, например:

Строка webServiceUrl = " http: //192.168.XX: your_local_server_port / your_web_service_name.php "

И убедитесь, что вы установили интернет-разрешение в манифесте проекта.

У меня он отлично работает

Удачи

Lotfi
источник
3

он работает для меня. Я использую genymotion для Run App.

1. Сначала я проверил свой локальный ip. goto command mode >> И напишите ipconfig. Пример: Windows 10 >> search cmd >> затем напишите ipconfig. 2. Затем получите информацию о вашем локальном IP-адресе. >>> 3. Используйте IP-адрес вашего локального хоста и виртуального ящика. Вам необходимо использовать виртуальный IP-адрес для genymotion. Смотрите скриншот ниже. Вы можете указать любой IP-адрес в сети хоста виртуальных боксов введите описание изображения здесь

Шохель Рана
источник
2

Замена localhost на 10.0.2.2 верна, но вы также можете заменить localhost IP-адресом вашего физического компьютера (это лучше для целей отладки). Конечно, если ip предоставляется dhcp, вам придется менять его каждый раз ...

Удачи!

анкаб
источник
0

Решение очень простое.

1 Добавьте разрешение на доступ к Интернету в файле Androidmanifest.xml

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

[2] Измените файл httpd.config

Order Deny,Allow
Deny from all
Allow from 127.0.0.1

TO

Order Deny,Allow
Allow from all
Allow from 127.0.0.1

And restart your server.

[3] И самый бессильный шаг. СДЕЛАЙТЕ СВОЮ СЕТЬ СВОЕЙ ДОМАШНЕЙ СЕТЬЮ

Перейдите в Панель управления> Сеть и Интернет> Центр управления сетями и общим доступом.

Click on your Network and select HOME NETWORK

введите описание изображения здесь

Мехул
источник