java.net.ConnectException: localhost / 127.0.0.1: 8080 - odmowa połączenia

97

Używam serwera xampp apache do udostępniania zasobów aplikacji z mojego komputera. Ale otrzymuję powyższy błąd.

Mam coś w Google. wskazanie na możliwe rozwiązanie tutaj http://groups.google.com/group/android-beginners/browse_thread/thread/599a06416fb37b4a

Jakie jest rozwiązanie powyższego problemu?

pradeep
źródło
1
Użyj pętli zwrotnej 10.0.2.2 do swojego hosta lokalnego (127.0.0.1). Więcej na ten temat można przeczytać tutaj. Sieć emulatora Androida
Dmytro Melnychuk

Odpowiedzi:

292

Ponieważ nie określiłeś, że jesteś podłączony do serwera z urządzenia lub emulatora, myślę, że używasz aplikacji w emulatorze.

Jeśli odwołujesz się do lokalnego hosta w systemie z emulatora Androida, musisz użyć, http://10.0.2.2:8080/ponieważ emulator Androida działa na maszynie wirtualnej, dlatego tutaj 127.0.0.1lub localhostbędzie własnym adresem pętli zwrotnej emulatora.

Zobacz: Emulator Networking

Vikas Patidar
źródło
Tak, dokładnie robię to samo. Czy możesz szczegółowo wyjaśnić. Gdzie zmienić adres IP na 10.0.2.2. To jest folder, do którego próbuję uzyskać dostęp z lokalnego hosta
xampp
1
Mam to, musimy zmienić ścieżkę podaną w aplikacji np. Http: // localhost: 8080 / link / to / resource.xml do http://10.0.2.2:8080/link/to/resource.xml
pradeep
@VikasPatidar możesz mi powiedzieć, gdzie zmienić ten adres na 10.0.2.2 w moim kodzie, ponieważ jestem nowicjuszem
AndroidOptimist
1
np. jeśli twój adres URL jest taki, http://localhost:8080/Getdata.phpczy http://127.0.0.1:8080/Getdata.phpmusisz go zmienić jako używanyhttp://10.0.2.2:8080/Getdata.php
Vikas Patidar
1
Wymień 10.0.2.2się 10.0.3.2jeśli działa na Genymotion.
Jacob R
25

w systemie Android

Zastąpić: String webServiceUrl = "http://localhost:8080/Service1.asmx"

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

Powodzenia!

PhuocLuong
źródło
1
gdzie w którym pliku?
user3475052
19

localhost i 127.0.0.1 to oba sposoby na powiedzenie „bieżącej maszyny”. Więc localhost na twoim komputerze to komputer, a localhost na Androidzie to telefon. Ponieważ Twój telefon nie obsługuje serwera internetowego, oczywiście odmówi połączenia.

Musisz uzyskać adres IP swojego komputera (użyj ipconfig w systemie Windows, aby się tego dowiedzieć) i użyj go zamiast 127.0.0.1. To może nadal nie działać, w zależności od konfiguracji sieci / zapór. Ale to zupełnie inny temat.

skorulis
źródło
Czy możesz wyjaśnić to bardziej szczegółowo, czy musisz
zmienić
2
Jeśli wpiszesz ipconfig, poda ci adres IP twojego urządzenia. Najprawdopodobniej jest to prywatny adres IP Twojej sieci, więc będzie dostępny tylko z urządzeń znajdujących się w tej samej sieci, więc WIFI prawdopodobnie będzie działać, a 3G prawdopodobnie nie będzie.
skorulis
@skorulis tak, musimy ustawić adres URL naszej maszyny inny niż 127.0.0.1, ponieważ jesteśmy połączeni z sieciami w naszym kodzie aplikacji.
Ravi Yadav
Możesz także ustawić konkretny adres IP dla komputera, na którym działa serwer. Użyj tego adresu IP w aplikacji na Androida. To jest lepsze, ponieważ w przypadku ponownego uruchomienia routera lub komputera często otrzymasz nowy adres IP komputera i przyzwyczaisz się do zmiany go w swoim kodzie.
DOUBL3P
12
  1. Dodaj uprawnienia internetowe w pliku Androidmanifest.xml

używa-uprawnień android: name = "android.permission.INTERNET

  1. Otwórz cmd w oknach
  2. wpisz „ipconfig”, a następnie naciśnij klawisz Enter
  3. znajdź adres IPv4. . . . . . . . . . . : 192.168.XX
  4. użyj tego adresu URL „ http: //192.168.XX: your_virtual_server_port / your_service.php
Omid Rostami
źródło
Dzięki, to działa dla emulatora NOX i Xammp.
Misam Mehmannavaz
9

Musisz tylko użyć swojego lokalnego (ale prawdziwego) adresu IP i numeru portu w następujący sposób:

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

I upewnij się, że w manifeście ustawiłeś pozwolenie internetowe

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

Panie Moustard
źródło
3

to działa dla mnie. Używam genymotion do Run App.

1. Najpierw sprawdzono moje lokalne IP. goto command mode >> I napisz ipconfig. Przykład: Windows 10 >> wyszukaj cmd >>, a następnie napisz ipconfig. 2. Następnie uzyskaj informacje o lokalnym adresie IP >>> 3. Użyj adresu IP hosta lokalnego i adresu IP wirtualnej skrzynki. Musisz użyć wirtualnego boxu IP do genymotion. Sprawdź poniższy zrzut ekranu. Możesz poniżej dowolnego adresu IP w sieci hosta virtualbox wprowadź opis obrazu tutaj

Shohel Rana
źródło
2

Zastąpienie localhost 10.0.2.2 jest poprawne, ale można też zastąpić localhost adresem IP swojej fizycznej maszyny (jest to lepsze do celów debugowania). Oczywiście, jeśli IP jest dostarczane przez dhcp, musiałbyś go zmieniać za każdym razem ...

Powodzenia!

ancab
źródło
0

Rozwiązanie jest bardzo proste.

1 Dodaj uprawnienia internetowe w pliku Androidmanifest.xml

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

[2] Zmień plik 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] I najbardziej bezsilny krok. URUCHOM SWOJĄ SIEĆ JAKO SIEĆ DOMOWĄ

Wybierz Panel sterowania> Sieć i Internet> Centrum sieci i udostępniania

Click on your Network and select HOME NETWORK

wprowadź opis obrazu tutaj

Mehul
źródło