java.net.ConnectException:localhost / 127.0.0.1:8080-连接被拒绝


97

我正在使用xampp apache服务器从我的机器向应用程序提供资源。但我收到上述错误。

我在Google上找到了东西。在这里指向可能的解决方案 http://groups.google.com/group/android-beginners/browse_thread/thread/599a06416fb37b4a

以上问题的解决方案是什么?


1
使用10.0.2.2回送到您的本地主机(127.0.0.1)。您可以在此处了解更多信息Android Emulator Networking
Dmytro Melnychuk

Answers:


292

由于未指定您已从设备或仿真器连接到服务器,因此我想您正在仿真器中使用应用程序。

如果要从Android模拟器引用系统上的本地主机,则必须使用,http://10.0.2.2:8080/因为Android模拟器在虚拟机中运行,因此此处127.0.0.1localhost将是模拟器自己的环回地址。

参见:模拟器联网


是的,我确实在做同样的事情。你能详细解释一下吗?将IP地址更改为10.0.2.2。这是我要从xampp服务器本地主机
pradeep 2011年

1
我知道了,我们必须将应用程序中给出的路径(例如http:// localhost:8080 / link / to / resource.xml)更改为http://10.0.2.2:8080/link/to/resource.xml
pradeep

@VikasPatidar您能不能告诉我在我的代码中将该地址更改为10.0.2.2的位置,因此是我的新手
AndroidOptimist

1
例如,如果您的URL喜欢,http://localhost:8080/Getdata.php或者http://127.0.0.1:8080/Getdata.php您必须将其更改为使用http://10.0.2.2:8080/Getdata.php
Vikas Patidar 2014年

1
更换10.0.2.210.0.3.2,如果你是在Genymotion运行。
Jacob R

25

在Android中

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

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

祝好运!


1
在哪个文件中?
user3475052

19

本地主机和127.0.0.1都是说“当前机器”的方式。因此,您PC上的localhost是PC,而android上的localhost是电话。由于您的手机没有运行网络服务器,因此它将拒绝连接。

您需要获取计算机的IP地址(使用Windows上的ipconfig进行查找),然后使用该IP地址代替127.0.0.1。根据您的网络/防火墙的设置,这可能仍然不起作用。但这是一个完全不同的话题。



2
如果输入ipconfig,它将告诉您计算机的IP地址。这很可能是您网络的专用IP地址,因此只能从同一网络上的设备进行访问,因此WIFI可能会起作用,而3G可能不会。
skorulis 2011年

@skorulis是,我们需要设置机器的url,该URL与127.0.0.1不同,因为我们已在应用程序代码中连接到网络。
拉维·亚达夫

您还可以为运行服务器的计算机设置特定的IP。在您的Android应用中使用此IP。这样比较好,因为在重新启动路由器或计算机的情况下,通常会为计算机获得一个新的IP,并且必须在代码中进行更改。
DOUBL3P


9

您只需要使用本地(但真实的)IP地址和端口号,如下所示:

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

并确保您确实在清单中设置了互联网许可

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




3

它为我工作。我将genymotion用于Run App。

1.首先我检查了我的本地IP。goto命令模式>>并编写ipconfig。示例:Windows 10 >>搜索cmd >>然后编写ipconfig。2.然后获取您的本地ip信息>>> 3.使用提供您的localhost ip和virtual box ip。您需要使用虚拟盒ip进行genymotion检查以下屏幕截图。您可以在virtualbox主机网络下的任何IP下 在此处输入图片说明


2

用10.0.2.2替换localhost是正确的,但是您也可以用物理机的ip替换localhost(最好用于调试目的)。Ofc,如果dhcp提供了ip,则每次都必须更改它...

祝好运!


0

解决方法很简单。

1在Androidmanifest.xml文件中添加Internet权限

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

[2]更改您的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]最无能为力的一步。 使您的网络成为您的家庭网络

转到控制面板>网络和Internet>网络和共享中心

Click on your Network and select HOME NETWORK

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.