java.net.ConnectException: localhost / 127.0.0.1: 8080 - Verbindung abgelehnt

97

Ich verwende den xampp-Apache-Server, um Ressourcen von meinem Computer aus für die Anwendung bereitzustellen. Aber ich bekomme den obigen Fehler.

Ich habe etwas auf Google. Hinweis auf eine mögliche Lösung hier http://groups.google.com/group/android-beginners/browse_thread/thread/599a06416fb37b4a

Was ist die Lösung für das oben genannte Problem?

pradeep
quelle
1
Verwenden Sie den 10.0.2.2-Loopback für Ihren lokalen Host (127.0.0.1). Sie können mehr darüber hier lesen Android Emulator Networking
Dmytro Melnychuk

Antworten:

292

Da Sie nicht angegeben haben, dass Sie vom Gerät oder Emulator aus mit einem Server verbunden sind, verwenden Sie Ihre Anwendung vermutlich im Emulator.

Wenn Sie Ihren lokalen Host vom Android-Emulator auf Ihr System verweisen, müssen Sie Folgendes verwenden, http://10.0.2.2:8080/da der Android-Emulator in einer virtuellen Maschine ausgeführt wird, daher hier 127.0.0.1oder localhostals eigene Loopback-Adresse des Emulators.

Siehe: Emulator-Netzwerk

Vikas Patidar
quelle
Ja, genau das mache ich genauso. Kannst du das im Detail erklären? Wo kann man die IP-Adresse in 10.0.2.2 ändern? Dies ist der Ordner, auf den ich vom xampp-Server localhost
pradeep
1
Ich habe es verstanden, wir müssen den in der Anwendung angegebenen Pfad wie http: // localhost: 8080 / link / to / resource.xml zu http://10.0.2.2:8080/link/to/resource.xml
pradeep ändern
@ VikasPatidar können Sie mir bitte sagen, wo ich diese Adresse in 10.0.2.2 in meinem Code als Neuling
ändern soll
1
zB wenn Ihre URL wie ist http://localhost:8080/Getdata.phpoder http://127.0.0.1:8080/Getdata.phpdann müssen Sie sie als Verwendung ändernhttp://10.0.2.2:8080/Getdata.php
Vikas Patidar
1
Ersetzen Sie 10.0.2.2durch, 10.0.3.2wenn Sie mit Genymotion arbeiten.
Jacob R
25

in Android

Ersetzen: String webServiceUrl = "http://localhost:8080/Service1.asmx"

Mit: String webServiceUrl = "http://10.0.2.2:8080/Service1.asmx"

Viel Glück!

PhuocLuong
quelle
1
wo in welcher Datei?
user3475052
19

localhost und 127.0.0.1 sind beide Arten, "die aktuelle Maschine" zu sagen. Localhost auf Ihrem PC ist also der PC und localhost auf dem Android ist das Telefon. Da auf Ihrem Telefon natürlich kein Webserver ausgeführt wird, wird die Verbindung abgelehnt.

Sie müssen die IP-Adresse Ihres Computers abrufen (verwenden Sie ipconfig unter Windows, um dies herauszufinden) und diese anstelle von 127.0.0.1 verwenden. Dies funktioniert möglicherweise immer noch nicht, je nachdem, wie Ihr Netzwerk / Ihre Firewalls eingerichtet sind. Das ist aber ein ganz anderes Thema.

Skorulis
quelle
Kannst
2
Wenn Sie ipconfig eingeben, wird die IP-Adresse Ihres Computers angezeigt. Dies ist höchstwahrscheinlich eine private IP-Adresse für Ihr Netzwerk, sodass nur von Geräten im selben Netzwerk darauf zugegriffen werden kann, sodass WIFI wahrscheinlich funktioniert, 3G wahrscheinlich nicht.
Skorulis
@skorulis Ja, wir müssen die URL unseres Computers festlegen, die sich von 127.0.0.1 unterscheidet, da wir in unserem App-Code mit Netzwerken verbunden sind.
Ravi Yadav
Sie können auch eine bestimmte IP für Ihren Computer festlegen, auf dem der Server ausgeführt wird. Verwenden Sie diese IP in Ihrer Android App. Dies ist besser, da Sie beim Neustart Ihres Routers oder Computers häufig eine neue IP-Adresse für den Computer erhalten und diese in Ihrem Code ändern müssen.
DOUBL3P
11
  1. Fügen Sie die Internetberechtigung in der Datei Androidmanifest.xml hinzu

Verwendungsberechtigung android: name = "android.permission.INTERNET

  1. Öffnen Sie cmd in Windows
  2. Geben Sie "ipconfig" ein und drücken Sie die Eingabetaste
  3. IPv4-Adresse suchen. . . . . . . . . . . : 192.168.XX
  4. Verwenden Sie diese URL " http: //192.168.XX: your_virtual_server_port / your_service.php ".
Omid Rostami
quelle
Danke, das funktioniert für NOX Emulator und Xammp.
Misam Mehmannavaz
9

Sie müssen nur Ihre lokale (aber echte) IP-Adresse und Portnummer wie folgt verwenden:

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

Stellen Sie sicher, dass Sie die Internetberechtigung im Manifest festgelegt haben

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

Mr. Moustard
quelle
4

Sie müssen nur Ihre lokale IP-Adresse verwenden: Verwenden Sie dazu den Befehl cmd "ipconfig" und Ihre Server-Portnummer wie folgt:

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

Stellen Sie sicher, dass Sie die Internetberechtigung in Ihrem Projektmanifest festgelegt haben

Es funktioniert perfekt für mich

Viel Glück

lotfi
quelle
3

Es funktioniert für mich. Ich benutze Genymotion für Run App.

1. Zuerst wurde meine lokale IP überprüft. gehe zum Befehlsmodus >> Und schreibe ipconfig. Beispiel: Windows 10 >> cmd >> suchen und dann ipconfig schreiben. 2. Dann holen Sie sich Ihre lokalen IP-Informationen >>> 3. Geben Sie Ihre lokale Host-IP und die virtuelle Box-IP an. Sie müssen Virtual Box IP für Genymotion verwenden. Überprüfen Sie den folgenden Screenshot. Sie können unter jeder IP unter Virtualbox Host-Netzwerk Geben Sie hier die Bildbeschreibung ein

Shohel Rana
quelle
2

Das Ersetzen von localhost durch 10.0.2.2 ist korrekt, aber Sie können localhost auch durch die IP Ihres physischen Computers ersetzen (besser für Debug-Zwecke). Ofc, wenn IP von DHCP bereitgestellt wird, müssten Sie es jedes Mal ändern ...

Viel Glück!

ancab
quelle
0

Die Lösung ist sehr einfach.

1 Fügen Sie die Internetberechtigung in der Datei Androidmanifest.xml hinzu

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

[2] Ändern Sie Ihre httpd.config-Datei

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] Und machtlosester Schritt. MACHEN SIE IHR NETZWERK ALS IHR ZUHAUSE-NETZWERK

Gehen Sie zu Systemsteuerung> Netzwerk und Internet> Netzwerk- und Freigabecenter

Click on your Network and select HOME NETWORK

Geben Sie hier die Bildbeschreibung ein

Mehul
quelle