(第一次写技术博客.......啦啦啦.....2018-5-4)
首先,向大家介绍一下这两个坑:
1号坑:使用android模拟器可以交互成功,但是同一路由器下的 手机 和 电脑 却无法交互
2号坑:使用手机可以连接到Servlet,但是收不到回传数据(用wireshark抓包过,Servlet的确发送了回传数据)
背景描述:我用httpURLConnection 连接servlet 进行交互,主要实现登录和注册功能,Android端 用HTTPURLConnection 以POST 方式提交给本地eclipse中tomcat中运行的servlet
一开始我用Android模拟器,连接本地的servlet,很容易就实现了,但是在真机上却一直失败。
(系统是win7)
1号坑 解决办法: 关闭防火墙就可以实现
注意:关闭防火墙不能在cmd里敲代码 net stop MpsSvc 来关闭
(本人以往一直使用这种简单粗暴的方式关闭防火墙,但是这种方式关闭的防火墙会阻隔手机和servle的连接)
而是必须得 去控制面板>大图标>Windows 防火墙>打开或关闭 Windows 防火墙里去操作
*(关于两种关闭防火墙的区别,本人也不是很懂,求解大神告知)
2号坑 解决办法:注意httpURLConnection.getInputStream 的写法
解决了1号坑之后,在同一路由器同一网段下,手机和电脑tomcat里的servlet可以连接了,serclet端也收到了数据,也回传了数 据(本人用wireshark抓包分析过,servlet端的确回传了数据),但是手机端接收到的数据却为空(in.available()为0)
以下为我旧的书写方式:
(该方式在模拟器下完美运行)
所以我一开始考虑的问题都是围绕android版本和手机防火墙,但是事实证明这些都是扯淡,根本无影响
后来无意中,我把上述代码,加了一个BufferReader居然就成功了!
贴出新代码
(真的很坑有没有,明明在虚拟机里简单写写就能完美运行,为什么真机就要加上BufferReader!
本人菜鸟一个,求解大神告知)
(本次博客处女座就这些啦...........)