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?


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


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!


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.



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


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" />




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


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!


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.