Jak połączyć się z moim http: // localhost web server z Android Emulator w Eclipse


485

Co mogę zrobić w emulatorze Androida Eclipse, aby połączyć go ze stroną serwera localhost na stronie http://localhostlub http://127.0.0.1?

Próbowałem, ale emulator nadal przyjmuje moją prośbę jak wyszukiwanie Google dla localhost lub co gorsza, mówi, że nie znalazł strony, podczas gdy mój serwer WWW normalnie działa.


To pytanie jest o Android Emulator i ma rozwiązań mających zastosowanie do tego przypadku monoterapii . Jeśli napotkasz ten problem podczas korzystania z fizycznego urządzenia z Androidem , zobacz stackoverflow.com/questions/4779963/...
Chris Stratton

Odpowiedzi:


819

Lokalny host odnosi się do urządzenia, na którym działa kod, w tym przypadku emulatora.

Jeśli chcesz odwołać się do komputera z symulatorem Androida, użyj adresu IP 10.0.2.2 .

wprowadź opis zdjęcia tutaj

Możesz przeczytać więcej tutaj .


12
po co odwoływać się do innego pytania? wystarczy dodać emulator
Marvin Emil Brach

Dziękujemy za wskazanie linku. Wydaje mi się, że nie było go tam, kiedy opublikowano odpowiedź.
Primal Pappachan

1
@primpap: Czy mogę użyć nazwy komputera zamiast adresu IP?
KJEjava48,

@primpap to nie działa z debugowaniem mobilnym. Czy jest jakiś inny? Albo gdzieś popełniam błąd, ponieważ 10.0.2.2 działa na emulatorze, ale nie działa, gdy podłączam telefon komórkowy do debugowania USB. ?
Jawad Zeb

5
To rozwiązanie działa tylko na emulatorach , zgodnie z pytaniem tutaj. Osoby debugujące na fizycznym urządzeniu z Androidem będą musiały użyć rzeczywistego adresu IP lub nazwy serwera, nie będą mogły używać tego specjalnego aliasu tylko z emulatora. Ta odpowiedź jest dobra - ale czytelnicy muszą uważać, aby ich sytuacja była taka, w jakiej można ją zastosować .
Chris Stratton,


29

Z powodzeniem korzystałem z 10.0.2.2 na moim komputerze domowym, ale w pracy nie działało. Po wielu godzinach wygłupów utworzyłem nową instancję emulatora za pomocą Android Virtual Device menedżera (AVD) i wreszcie 10.0.2.2 zadziałało.

Nie wiem, co było nie tak z inną instancją emulatora (platforma była taka sama), ale jeśli okaże się, że 10.0.2.2 nie działa, spróbuj utworzyć nową instancję emulatora.


4
Niestety nie działa dla mnie nawet po utworzeniu nowej instancji AVD. Co sugerujesz? Aby ponownie wszystko zainstalować?
Vlado Pandžić

23

Spróbuj, http://10.0.2.2:8080/gdzie 8080jest twój numer portu. Działa idealnie. Jeśli tylko spróbujesz, 10.0.2.2to nie zadziała. Musisz do niego dodać numer portu. Również jeśli Microsoft IIS został zainstalowany, spróbuj wyłączyć tę funkcję z panelu sterowania (jeśli używasz dowolnego systemu operacyjnego Windows), a następnie spróbuj wykonać powyższe czynności.


2
Co jeśli strony są hostowane w IIS?
maracuja-juice

@Marimba po prostu dowiedz się, na jakim porcie służy twój serwer IIS, a następnie uzyskaj
StoneLam

jest to kompletny ciąg i jedyny działający na moim emulatorze Androida 8.1
CodeToLife

10

zgodnie z dokumentacją:

10.0.2.2 - Specjalny alias do interfejsu sprzężenia zwrotnego hosta (tj. 127.0.0.1 na komputerze programisty)

sprawdź Emulator Networking, aby uzyskać więcej sztuczek związanych z siecią emulatora.



3

Musiałem znaleźć adres IP hosta systemu dla emulatora „Nox App Player”. Oto, jak się zorientowałem 172.17.100.2.

  1. Zainstalowano emulator terminala Android ze sklepu z aplikacjami
  2. Wydaj ip link showpolecenie, aby wyświetlić wszystkie interfejsy sieciowe. Szczególnie interesujący był interfejs eth1
  3. Wydaj ifconfig eth1polecenie, pokazuje net jako172.17.100.15/255.255.255.0
  4. Rozpocznij pingowanie adresów zaczynając od 172.17.100.1, trafiłem na `172.17.100.2 '. Nie jestem pewien, czy zapora zadziała, ale w moim przypadku tak nie było

Może to może pomóc komuś innemu dowiedzieć się o innych emulatorach.


1

Jeśli jesteś w systemie Windows, możesz przejść do systemu simbol i napisać ipconfig i sprawdzić, jaki ip jest przypisany do twojego komputera.


Nie jest to konieczne podczas debugowania z emulatora, ponieważ można użyć specjalnego aliasu dla interfejsu sprzężenia zwrotnego hosta wymienionego w innych odpowiedziach. Jeśli jednak debugujesz z fizycznego urządzenia z Androidem, to tak, musisz określić rzeczywisty adres serwera testowego i użyć go.
Chris Stratton

1

Możesz faktycznie użyć localhost:8000do połączenia z lokalnym hostem komputera, uruchamiając poniższe polecenie za każdym razem, gdy uruchamiasz emulator (testowany tylko na Macu):

adb reverse tcp:8000 tcp:8000

Wystarczy umieścić go w terminalu Android Studio.

Zasadniczo konfiguruje odwrotne proxy, w którym serwer HTTP działający w telefonie akceptuje połączenia na porcie i łączy je z komputerem lub odwrotnie.


0

Nie wiem, może ten temat jest już rozwiązany, ale kiedy ostatnio próbowałem to zrobić na komputerze z systemem Windows, napotkałem wiele trudności. Więc moje rozwiązanie było naprawdę proste. Pobrałem ten miękki http://www.lenzg.net/rinetd/rinetd.html postępując zgodnie z ich instrukcjami dotyczącymi przekazywania portów, a następnie pomyślnie nawiązałem połączenie z moim urządzeniem z Androidem, aby utworzyć projekt lokalnego hosta asp.net i zatrzymałem się w punkcie krytycznym.

mój plik rinetd.conf:

10.1.1.20 1234 127.0.0.1 1234
10.1.1.20 82 127.0.0.1 82

Gdzie 10.1.1.20 jest moim lokalnym hostem ip, 82 i 1234 moje porty Również mam skąpy plik kąpieli dla łatwego życia twoja nazwabathfile.bat, umieść ten plik w folderze rinedfolder. Mój plik do kąpieli:

rinetd.exe -c rinetd.conf

Po uruchomieniu tego soft, uruchom serwer aps.net i spróbuj uzyskać dostęp z urządzenia z systemem Android lub dowolnego urządzenia w sieci lokalnej (na przykład Kit ABC uruchamia kit), a zobaczysz, że wszystko działa. Nie musisz przechodzić do ustawień routera ani wykonywać innych skomplikowanych czynności. Mam nadzieję, że to Ci pomoże. Cieszyć się.


-1

Innym obejściem jest uzyskanie bezpłatnej domeny od no-ip.org i skierowanie jej na lokalny adres IP. Następnie zamiast używać http://localhost/yourwebservicemożesz spróbowaćhttp://yourdomain.no-ip.org/yourwebservice

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.