Android与本地Tomcat的连接
知道大家是否想试一下用Android模拟器如何访问自己建的Web站点呢?
下面我将讲一下如何实现
Step 1:我用的Tomcat作为本地服务器,在Webapps这个目录里,把我的名为kankong的Web工程放进来,启动Tomcat服务器.
在浏览器里输入: http://localhost(或者127.0.0.1):8080 nkong/index.html将出现如下界面:
Step 2:启动Android 模拟器: 如果你在Eclipse里已经启动了Android模拟器就跳过此步.我们如何手动启动Android模拟器呢?
首先运行cmd出现我们习惯的黑屏,输入Android list avd(列出所有AVD模拟器)
然后我们选择其中一个启动以Android 1.5为例子:emulator -debug avd_config -avd android 1.5: 出现我们熟悉的画面如下:
Step 3:打开浏览器输入 http://localhost:8080/kankong/index.html?
我们的第一想法是输入 http://localhost:8080/kankong/index.html,
可是这将不会成功,为什么呢?问题是这样的,Android模拟(simulator)把它自己作为了localhost,
也就是说,代码中使用 localhost或者127.0.0.1来访问,都是访问模拟器自己!这是不行的!如果你想在模拟器simulator上面访问你的电脑,那么就使用 android内置的IP 10.0.2.2 吧, 10.0.2.2 是模拟器设置的特定ip,是你的电脑的别名alias记住,
在模拟器上用10.0.2.2访问你的电脑本机. 也就是输入 http://10.0.2.2:8080/kankong/index.html 将 出现如下界面: (请记住: http://10.0.2.2:端口号) 如果你的默认端口是80,可以直接输入 http://10.0.2.2 OK~这样就大功告成了!
今天学习网络连接遇到了一个问题就是:
android java.net.ConnectException: Connection 127.0.0.1:8080 refused
解决方法如下:
调试中通过android simulator模拟器链接localhost或者127.0.0.1,因为我在电脑上面建立了apache,我的代码大概就是
URL url = new URL(urlString);
URLConnection urlconn = url.openConnection();
但是报错了!!
Exception 1:java.net.ConnectException: localhost/127.0.0.1:8080 -
Connection refused
问题是这样的,android模拟器(simulator)把它自己作为了localhost,也就是说,代码中使用localhost或者127.0.0.1来访问,都是访问模拟器自己!这是不行的!
如果你想在模拟器simulator上面访问你的电脑,那么就使用android内置的IP 10.0.2.2 吧, 10.0.2.2 是模拟器设置的特定ip,是你的电脑的别名alias
记住,在模拟器上用10.0.2.2访问你的电脑本机
不能直接访问localhost 或者127.0.0.1 这样直接访问到andoird 本机, 可以用直接IP地址访问
CMD 输入ipconfig 可以查看IP
我也遇到了这个问题,根据5楼的回答是做出来了。
这样是可以在项目里面访问到特定的地址,但是如果想直接在虚拟机里面打开其他网址还是不行啊。
我电脑很奇怪,1.6的虚拟机直接就可以在虚拟机里面上网,运行应用程序甚至都不用在mannifest中加入权限的那行代码,都可以运行。但是2.2就不行了,在虚拟机里用任何网址都是提示网页不可用错误。
不知道有没有让2.2虚拟机也能直接上网的方法。
localhost访问的是模拟器自己的IP,在模拟器上访问电脑当然要写电脑的IP。
终于把MP3player项目完成了,虽然很简单但是还有点成就感
中间遇到一些简单的问题想必初学者会遇到
1.用Android访问自己电脑Tomcat服务器出现connection refused
127.0.0.1 是 Android 模拟器设务自己的回送接口(既localhost)。
所以不能使用电脑连接android模拟器。
访问自己电脑上配置的tomcat服务器时有两种方法:
(1):使用自己电脑的ip地址
(2):可以用android内置IP 10.0.2.2
获取IP地址:
可用 ipconfig 查询IP
2.乱码问题
解决方法如下:
1.中文MP3名字下载问题
http://192.168.1.104:8080/mp3/a1.mp3这样可以下载到
http://192.168.1.104:8080/mp3/十年.mp3 出现中文名字就下载不到了。
解决方法:
1.修改Tomcat服务器conf\server.xml 这个文件。打开找到8080(我的Tomcat有两段port="8080",反正我两段都加了),在最后加上 URIEncoding="utf-8"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8"/>
2.程序中修改“中文”的编码。关键代码URLEncoder.encode("string","utf-8");(只要把中文部分转编码就可以了)mp3info.getMp3Name()取得MP3的名字。
utfname=URLEncoder.encode(mp3info.getMp3Name(),"utf-8");
mp3url="http://192.168.1.104:8080/mp3/"+utfname;
URL url=new URL(mp3url);
这样就可以下载MP3文件了
=================================================================================
2.XML读取得中文的问题
解决方法:在InputStreamReader中设置编码为gb2312
还有歌词问题:
关键代码: InputStreamReader(inputStream,"GB2312");
好像有InputStreamReader的地方都要用"GB2312",用"UTF-8"不行.
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2011-10/44804.htm