So stellen Sie über Android Emulator in Eclipse eine Verbindung zu meinem http: // localhost-Webserver her


485

Was kann ich im Android-Emulator von Eclipse tun, um eine Verbindung zu meiner localhost-Webserverseite unter http://localhostoder herzustellen http://127.0.0.1?

Ich habe es versucht, aber der Emulator nimmt meine Anfrage immer noch wie eine Google-Suche nach localhost entgegen oder schlimmer noch, er hat die Seite nicht gefunden, während mein Webserver normalerweise ausgeführt wird.


Diese Frage ist über den Android - Emulator und hat Lösungen für diesen Fall allein . Wenn Sie dieses Problem bei der Verwendung eines physischen Android-Geräts haben , lesen
Chris Stratton

Antworten:


819

Der localhost bezieht sich auf das Gerät, auf dem der Code ausgeführt wird, in diesem Fall den Emulator.

Wenn Sie sich auf den Computer beziehen möchten, auf dem der Android-Simulator ausgeführt wird, verwenden Sie stattdessen die IP-Adresse 10.0.2.2 .

Geben Sie hier die Bildbeschreibung ein

Sie können mehr von lesen hier .


12
Warum auf die andere Frage verweisen? Fügen Sie einfach den Link Android Emulator Networking
Marvin Emil Brach

Vielen Dank für den Hinweis auf den Link. Ich denke, es war nicht da, als die Antwort veröffentlicht wurde.
Primal Pappachan

1
@primpap: Kann ich den Computernamen anstelle der IP-Adresse verwenden?
KJEjava48

@primpap Dies funktioniert nicht mit Mobile Debugging. Gibt es noch andere? Oder ich mache irgendwo einen Fehler, weil 10.0.2.2 am Emulator arbeitet, aber nicht funktioniert, wenn ich Mobile für USB-Debugging verbinde. ?
Jawad Zeb

5
Diese Lösung funktioniert nur mit Emulatoren , wie in der spezifischen Frage hier gestellt. Diejenigen, die auf einem physischen Android-Gerät debuggen, müssen die tatsächliche IP-Adresse oder den tatsächlichen Namen des Servers verwenden. Sie können diesen speziellen Alias ​​nur für Emulatoren nicht verwenden. Diese Antwort ist gut - aber die Leser müssen darauf achten, dass ihre Situation zutreffend ist .
Chris Stratton

156

Verwenden Sie 10.0.2.2für Standard-AVD und 10.0.3.2für.


Fügen wir also einfach 10.0.3.2unsere Host-Datei hinzu?
Ayjay

29

Ich habe 10.0.2.2 erfolgreich auf meinem Heimcomputer verwendet, aber bei der Arbeit hat es nicht funktioniert. Nach stundenlangem Herumalbern habe ich mit dem AVD-Manager ( Android Virtual Device ) eine neue Emulatorinstanz erstellt , und schließlich hat 10.0.2.2 funktioniert.

Ich weiß nicht, was mit der anderen Emulatorinstanz falsch war (die Plattform war dieselbe), aber wenn Sie feststellen, dass 10.0.2.2 nicht funktioniert, versuchen Sie, eine neue Emulatorinstanz zu erstellen.


4
Leider funktioniert es bei mir auch nach dem Erstellen einer neuen AVD-Instanz nicht. Was schlagen Sie vor? Alles neu installieren?
Vlado Pandžić

23

Versuchen Sie, http://10.0.2.2:8080/wo 8080Ihre Portnummer ist. Es hat perfekt funktioniert. Wenn Sie es einfach versuchen 10.0.2.2, wird es nicht funktionieren. Sie müssen die Portnummer hinzufügen. Wenn Microsoft IIS installiert wurde, deaktivieren Sie diese Funktion in der Systemsteuerung (wenn Sie ein Windows-Betriebssystem verwenden) und versuchen Sie es dann wie oben angegeben.


2
Was ist, wenn die Seiten auf IIS gehostet werden?
Maracuja-Saft

@ Marimba nur herausfinden, auf welchem ​​Port Ihr IIS-Server dient, und dann auf 10.0.2.2:your_iis_port
StoneLam

Dies ist eine fertige Zeichenfolge und die einzige, die auf meinem Android 8.1-Emulator
funktioniert hat

10

laut Dokumentation:

10.0.2.2 - Spezieller Alias ​​für Ihre Host-Loopback-Schnittstelle (dh 127.0.0.1 auf Ihrem Entwicklungscomputer)

überprüfen Emulator Networking für mehr Tricks auf Emulator Vernetzung.



3

Ich musste die IP-Adresse des Systemhosts für den Emulator "Nox App Player" herausfinden. Hier ist, wie ich herausgefunden habe, dass es war 172.17.100.2.

  1. Installierter Android Terminal Emulator aus dem App Store
  2. Problem ip link showBefehl , um alle Netzwerkschnittstellen anzuzeigen. Von besonderem Interesse war die eth1-Schnittstelle
  3. Problem ifconfig eth1Befehl , zeigt net als172.17.100.15/255.255.255.0
  4. Beginnen Sie mit dem Pingen von Adressen ab 172.17.100.1und erhalten Sie einen Treffer für "172.17.100.2". Ich bin mir nicht sicher, ob eine Firewall stören würde, aber in meinem Fall nicht

Vielleicht kann dies jemand anderem helfen, es für andere Emulatoren herauszufinden.


1

Wenn Sie sich in Windows befinden, können Sie zu simbol system gehen und ipconfig schreiben und überprüfen, welche IP Ihrem Computer zugewiesen ist.


Dies ist beim Debuggen von einem Emulator nicht erforderlich, da Sie den speziellen Alias ​​für die in den anderen Antworten angegebene Host-Loopback-Schnittstelle verwenden können. Wenn Sie jedoch von einem physischen Android-Gerät aus debuggen, müssen Sie die tatsächliche Adresse Ihres Testservers ermitteln und verwenden.
Chris Stratton

1

Sie können tatsächlich localhost:8000eine Verbindung zum localhost Ihres Computers herstellen, indem Sie jedes Mal, wenn Sie Ihren Emulator ausführen, den folgenden Befehl ausführen (nur auf dem Mac getestet):

adb reverse tcp:8000 tcp:8000

Stellen Sie es einfach in das Android Studio-Terminal.

Grundsätzlich wird ein Reverse-Proxy eingerichtet, bei dem ein auf Ihrem Telefon ausgeführter http-Server Verbindungen an einem Port akzeptiert und diese mit Ihrem Computer verbindet oder umgekehrt.


0

Ich weiß nicht, vielleicht ist dieses Thema bereits gelöst, aber als ich kürzlich versucht habe, dies auf einem Windows-Computer zu tun, hatte ich viele Schwierigkeiten. Meine Lösung war also wirklich einfach. Ich habe dieses Soft http://www.lenzg.net/rinetd/rinetd.html heruntergeladen den Anweisungen zum Portweiterleiten gefolgt. Dann hat mein Android-Gerät erfolgreich eine Verbindung hergestellt, um das asp.net localhost-Projekt zu erstellen, und an meinem Bruchpunkt angehalten.

meine rinetd.conf Datei:

10.1.1.20 1234 127.0.0.1 1234
10.1.1.20 82 127.0.0.1 82

Wobei 10.1.1.20 meine localhost IP, 82 und 1234 meine Ports ist. Außerdem habe ich eine Baddatei für ein einfaches Leben erstellt. Yournameofbathfile.bat, lege diese Datei in den Ordner rined. Meine Baddatei:

rinetd.exe -c rinetd.conf

Nachdem Sie diese Software gestartet haben, starten Sie Ihren aps.net-Server und versuchen Sie, von einem Android-Gerät oder einem anderen Gerät in Ihrem lokalen Netzwerk (z. B. Computer ABC startet Putty) darauf zuzugreifen. Sie werden sehen, dass alles funktioniert. Sie müssen nicht zur Router-Einstellung gehen oder andere komplizierte Dinge tun. Ich hoffe, dies wird dir helfen. Genießen.


-1

Eine andere Problemumgehung besteht darin, eine kostenlose Domain von no-ip.org zu erhalten und auf Ihre lokale IP-Adresse zu verweisen. Dann http://localhost/yourwebservicekönnen Sie es versuchen , anstatt es zu verwendenhttp://yourdomain.no-ip.org/yourwebservice

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.