android 中访问localhost:8080 报错org.apache.http.conn.HttpHostConnectException

来源:互联网 发布:java 线程 wait 编辑:程序博客网 时间:2024/05/22 02:11

报这个错 一上来肯定想不明白以前作任何网络开发 先访问本地服务localhost:8080作测试很正常。也没出过什么问题但是今天作android开发,先在本机8080端口上搭建一个服务,然后从模拟器上访问该服务时报出了org.apache.http.conn.HttpHostConnectException错误其实 静下心来想想,模拟器实际上是个虚拟机,我们代码中指定的localhost 是模拟器而不是我们的pc所以 你应该把localhost改为你现在pc的ip地址 这个问题就轻松解决了! 当然 如果你的机器本身就是在测试本地的localhost服务没有公网ip该怎么办?那么你就只能用android模拟器了,然后将你的ip地址改为10.0.2.2:8080这样模拟器就可以访问本机的网络服务了。如果是真机,那不行,你还是需要为你的pc找一个公网地址。
参考地址:http://blog.sina.com.cn/s/blog_67d95f400100mmu9.html


最近两天学习android Mp3项目练习,mars老师讲的过程中都一切顺利,没有什么问题,但是我的机器上老是运行不出来,昨天晚上我调试很久,程序没有问题,后来发现我的tomcat服务器访问不了,才让我想起来,之前自己在机器上安装过一个php开发包,里面封装着mysql和apache,可能是端口的问题,于是我把php里面的服务都取消,tomcat可以访问了,但是还是一直从服务器上无法读取文件信息。绞尽脑汁也想不出来个所以然来,测试程序总是在:
    

URL url=new URL("http://localhost:8080/mp3/resources.xml");    System.out.println("SSSSSSSSSSSSSSSSSSSSS22");    HttpURLConnection conn = (HttpURLConnection)url.openConnection();     System.out.println("SSSSSSSSSSSSSSSSSSSSS11");    InputStreamReader isr=new InputStreamReader(conn.getInputStream(),"UTF-8");    System.out.println("SSSSSSSSSSSSSSSSSSSSS33");      BufferedReader br = new BufferedReader(isr);    System.out.println("SSSSSSSSSSSSSSSSSSSSS"+br.toString());


红色字体部分停止,就是查不出原因,自己想想也许是自己机器上的问题,于是我换了一台机器运行,结果依然如是,我几乎愁坏了,因为从logcat里面也没看出来所以然来,再我无计可施时,我休息一上午,自己想想既然有问题肯定会从logcat上表现出来,于是又从logcat下手,因为之前我一直Logcat里查原因,还有就是自己写过滤器,后来无意中点击几下下图的按钮:,在W(warming)警告里面有一句“java.net.ConnectException: localhost/127.0.0.1:8080 -Connection refused”,才找到这个问题的根结所在,原来
原来模拟器默认把127.0.0.1和localhost当做本身了
在模拟器上可以用10.0.2.2代替127.0.0.1和localhost
另外如果是在局域网环境可以用 192.168.0.x或者192.168.1.x(根据具体配置)连接本机。
至此,问题解决,顿时都想泪奔;同时提醒大家,在使用套接字时,别忘了在androidManifest.xml中添加权限,否则无法完成访问。
<uses-permission android:name="android.permission.INTERNET"/>


参考地址:http://blog.csdn.net/tts_kevin/article/details/6270983

0 0