java.net.ConnectException: localhost / 127.0.0.1: 8080 - Підключення відмовлено


97

Я використовую сервер xampp apache для обслуговування ресурсів програми з моєї машини. Але я отримую вищезазначену помилку.

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

Яке рішення вищезазначеної проблеми?


1
Використовуйте 10.0.2.2 петлю для вашого локального хосту (127.0.0.1). Більше про це ви можете прочитати тут Мережа Android Emulator
Дмитро Мельничук

Відповіді:


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
Vikas Patidar

1
Замінити 10.0.2.2з , 10.0.3.2якщо ви працюєте на Genymotion.
Яків R


19

localhost та 127.0.0.1 - це обидва способи сказати "поточна машина". Тож localhost на вашому ПК - це ПК, а localhost на android - це телефон. Оскільки ваш телефон не працює на веб-сервері, звичайно, він відмовиться від з'єднання.

Вам потрібно отримати IP-адресу вашого комп'ютера (використовуйте ipconfig у Windows, щоб дізнатися це) та використовувати його замість 127.0.0.1. Це все ще не працює в залежності від налаштування вашої мережі / брандмауера. Але це зовсім інша тема.


Ви можете пояснити, що більш докладно, потрібно сканувати IP-адресу моїх машин
поговорити

2
Якщо ви введете ipconfig, він повідомить вам IP-адресу вашої машини. Це, швидше за все, приватна IP-адреса для вашої мережі, тому вона буде доступна лише з пристроїв, що знаходяться в одній мережі, тому WIFI, ймовірно, буде працювати, 3G, ймовірно, не буде.
skorulis

@skorulis так, нам потрібно встановити URL нашої машини, який відрізняється від 127.0.0.1, оскільки ми підключені до мереж у коді програми.
Раві Ядав

Ви також можете встановити певний IP для вашого комп'ютера, на якому працює сервер. Використовуйте цей IP в додатку для Android. Це краще, оскільки у випадку перезапуску маршрутизатора або комп’ютера ви часто отримуватимете новий IP-адресу для комп’ютера, і ви могли б змінити його у своєму коді.
DOUBL3P

11
  1. Додайте дозвіл на Інтернет у файл Androidmanifest.xml

використовує-дозволу android: name = "android.permission.INTERNET

  1. Відкрийте cmd у вікнах
  2. введіть "ipconfig", потім натисніть клавішу Enter
  3. знайти адресу IPv4. . . . . . . . . . . : 192.168.XX
  4. використовувати цю URL-адресу " http: //192.168.XX: your_virtual_server_port / your_service.php "

Дякуємо, це працює для емулятора NOX та Xammp.
Misam Mehmannavaz

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.or, або ви можете використовувати 10.0.2.2 замість localhost.

http: //localhost/webservice.php to 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" та номер вашого порту сервера таким чином:

String webServiceUrl = " http: //192.168.XX: your_local_server_port / your_web_service_name.php "

І обов’язково встановіть дозвіл на Інтернет у своєму маніфесті проекту

Для мене це чудово працює

Щасти


3

це працює для мене. Я використовую genymotion для запуску програми.

1.Перше мене перевірили місцеві ip. командний режим goto >> І запишіть ipconfig. Приклад: Windows 10 >> шукати cmd >>, потім написати ipconfig. 2. Потім отримайте локальну інформацію про ip >>> 3. Використовуйте, надайте локальний ip i віртуальне поле ip. Вам потрібно використовувати віртуальний ящик ip для genymotion. Перевірте нижче знімок екрана. Ви можете знаходитись під будь-яким ip під хост-мережею virtualbox введіть тут опис зображення


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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.