异常
Caused by: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 8080) from /127.0.0.1 (port 53568) after 10000ms: isConnected failed: ECONNREFUSED (Connection refused)
Caused by: android.system.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)
W/System.err: at libcore.io.IoBridge.isConnected(IoBridge.java:334)
问题描述
写了一个Android项目,android项目在Android Studio上跑,服务器代码在idea跑,两个在一台电脑上跑,我在Android项目中通过http请求服务器数据抛出上述异常。但是请求百度的url却可以正常返回数据。
原因
百度:http://www.baidu.com
自己服务器:http://localhost:8080/test/f01
对比一下百度的url和自己的url,略加思考可以得出是ip出现了问题。因为我们的Android项目是跑在android虚拟机的,我们这里无论用localhost还是127.0.0.1,都是在那个虚拟机里找,但是虚拟机中没有服务器代码。
(你的localhost和127.0.0.1想表示的是你的电脑,但是当android项目跑在虚拟机中时,它就表示成了虚拟机)
解决方案
在cmd下查看无线网卡ip,将url的ip换成这个
http://192.168.3.245:8080/test/f01
原理:虚拟机通过上网功能,通过你电脑的无线网ip找到你的服务器。