Android : httpURLConnection以POST方式连接Servlet进行数据交互,遇到的两个坑及解决方案

(第一次写技术博客.......啦啦啦.....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!

本人菜鸟一个,求解大神告知


(本次博客处女座就这些啦...........)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值