java.net.ConnectException: localhost / 127.0.0.1: 8080 - Conexão recusada


97

Estou usando o servidor apache xampp para servir recursos para o aplicativo de minha máquina. Mas estou recebendo o erro acima.

Tenho algo no google. apontando para uma possível solução aqui http://groups.google.com/group/android-beginners/browse_thread/thread/599a06416fb37b4a

Qual é a solução para o problema acima?


1
Use o loopback 10.0.2.2 para seu host local (127.0.0.1). Você pode ler mais sobre isso aqui Android Emulator Networking
Dmytro Melnychuk

Respostas:


292

Como você não especificou, está conectado a um servidor a partir do dispositivo ou emulador, então acho que você está usando seu aplicativo no emulador.

Se você está referenciando seu localhost em seu sistema a partir do emulador Android, então você deve usar http://10.0.2.2:8080/Porque o emulador Android é executado em uma máquina virtual, portanto, aqui 127.0.0.1oulocalhost será o próprio endereço de loopback do emulador.

Consulte: Emulador de rede


Sim, estou exatamente fazendo a mesma coisa. Você pode explicar em detalhes. Onde alterar o endereço IP para 10.0.2.2. Esta é a pasta que estou tentando acessar do servidor xampp localhost: 8080 / aero
pradeep

1
Entendi, temos que alterar o caminho fornecido no aplicativo como http: // localhost: 8080 / link / to / resource.xml para http://10.0.2.2:8080/link/to/resource.xml
pradeep

@VikasPatidar pode me dizer onde alterar este endereço para 10.0.2.2 no meu código como sou um novato
AndroidOptimist

1
por exemplo, se o seu URL é semelhante http://localhost:8080/Getdata.phpou http://127.0.0.1:8080/Getdata.phpentão você deve alterá-lo conforme o usohttp://10.0.2.2:8080/Getdata.php
Vikas Patidar

1
Substitua 10.0.2.2por 10.0.3.2se estiver executando o Genymotion.
Jacob R

25

no android

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

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

Boa sorte!


1
onde em qual arquivo?
user3475052

19

localhost e 127.0.0.1 são maneiras de dizer 'a máquina atual'. Portanto, o localhost no seu PC é o PC e o localhost no Android é o telefone. Como o seu telefone não está rodando um servidor web, é claro que ele recusará a conexão.

Você precisa obter o endereço IP da sua máquina (use ipconfig no Windows para descobrir) e use-o em vez de 127.0.0.1. Isso pode ainda não funcionar, dependendo de como sua rede / firewalls estão configurados. Mas esse é um assunto completamente diferente.


Você pode explicar isso com mais detalhes, preciso alterar o endereço IP de minhas máquinas
pradeep

2
Se você digitar ipconfig, ele informará o endereço IP da sua máquina. Provavelmente, este é um endereço IP privado para a sua rede, por isso só estará acessível a partir de dispositivos que estão na mesma rede, então o WIFI provavelmente funcionará, o 3G provavelmente não.
skorulis

@skorulis sim, precisamos definir a url de nossa máquina que é diferente de 127.0.0.1 porque estamos conectados a redes em nosso código de aplicativo.
Ravi Yadav

Você também pode definir um IP específico para o seu computador no qual o servidor está sendo executado. Use este IP em seu aplicativo Android. Isso é melhor porque no caso de você reiniciar seu roteador ou computador, você frequentemente obterá um novo IP para o computador e poderá alterá-lo em seu código.
DOUBL3P de


9

Você só precisa usar seu endereço IP local (mas real) e o número da porta como este:

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

E certifique-se de definir a permissão de internet no manifesto

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




3

está funcionando para mim. Eu uso genymotion para o aplicativo Run.

1. Primeiro, verifiquei meu ip local. goto command mode >> E escreva ipconfig. Exemplo: Windows 10 >> search cmd >> e Write ipconfig. 2. Em seguida, obtenha as informações do seu ip local >>> 3. Use o ip do host local e o ip da caixa virtual. Você precisa usar o ip da caixa virtual para genymotion. Verifique a captura de tela abaixo. Você pode colocar abaixo de qualquer ip na rede host virtualbox insira a descrição da imagem aqui


2

Substituir localhost por 10.0.2.2 está correto, mas você também pode substituir localhost pelo ip da máquina física (é melhor para fins de depuração). Ofc, se o ip for fornecido pelo dhcp você terá que alterá-lo a cada vez ...

Boa sorte!


0

A solução é muito simples.

1 Adicione permissão de Internet no arquivo Androidmanifest.xml

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

[2] Altere seu arquivo 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] E o passo mais impotente. FAÇA SUA REDE COMO SUA REDE DE CASA

Vá para Painel de Controle> Rede e Internet> Central de Rede e Compartilhamento

Click on your Network and select HOME NETWORK

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.